Это является продолжением на этот вопрос Apache directory directive authentication based on Perl CGI::SessionApache RewriteRule проверить логин и перенаправить на страницу
Alias /files /myData/all
<Directory /myData/all >
RewriteEngine On
RewriteBase/
RewriteRule ^(.*)$ cgi-bin/checklogin.pl?url=/files/$1 [L,R]
Options +Indexes
</Directory>
/файлов является список каталогов.
Я отредактировал директиву, чтобы, если пользователь переходит к веб-серверу/файлам/они перенаправляются на checklogin.pl, который проверяет наличие сеанса. Если он есть, он должен перенаправить на URL-адрес, если он не переносит их на страницу входа.
Первая часть работает. Переадресация на $ url вызывает цикл.
my $url = $cgi->param("url");
my $cookie = $cgi->cookie('mysession');
if(!$cookie){
$session = new CGI::Session();
print $session->redirect('/loginpage.html');
}else{
# HOW DO I display folder or files now?
$session = new CGI::Session(undef, $cookie, {Directory=>'/tmp/'});
print $session->redirect($url);
}
Я, очевидно, получаю ошибку цикла редирект в Apache
This webpage has a redirect loop
Почему вы устанавливаете свой файл cookie для немедленного истечения срока действия? – ThisSuitIsBlackNot
Это не имеет значения. Я удалил его, в этом случае нет существующего файла cookie. – Jabda
. Вы не добавляете свой файл cookie в заголовки ответов, чтобы пользователь никогда не получил его. – ThisSuitIsBlackNot