Я пытаюсь достичь аутентифицированного списка файлов в Apache, используя PHP через Apache autoindex module.Как перенаправить страницу Apache «Index of ...»?
Как я мог предположить, что Apache запускает PHP-скрипт как header file. Мне удалось заставить Apache правильно запускать PHP для файла заголовка, и он также отлично определяет файлы cookie для входа. Но кажется, что Apache запускает заголовочный файл как отдельный запрос, что означает, что если я попытаюсь отправить заголовок перенаправления с PHP, он не будет запущен.
My (упрощенный) Apache конфигурации:
DocumentRoot "/path/to/files_root"
Alias /~extra "/path/to/extra-data"
<Directory "/path/to/extra-data">
Options -Indexes -MultiViews +Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
IndexOptions FancyIndexing HTMLTable SuppressHTMLPreamble
AddType text/html .php .html .htm
AddOutputFilter INCLUDES .php
AddHandler application/x-httpd-php .php
HeaderName "/~extra/HEADER.php"
Мой header.php файл:
<?php
if (! my_validate_cookie_function()) {
header('HTTP/1.1 302 Found');
header('Location: http://login.example.com/');
exit(1);
}
Таким образом, заголовок не отправляется в браузер. Установка виражей среды Apache не работает, поскольку они уже давно прошли, когда HEADER.php закончен.
Сам файл cookie зашифрован, поэтому для его проверки требуется PHP.
Любые предложения по достижению желаемого эффекта?
Я бы предположил, что было бы проще иметь файл 'index.php' в каталоге и иметь список файлов там (если они аутентифицированы). Вы хотите, чтобы я ответил этим методом? –
@ScottS Пожалуйста, ответьте своим решением. К сожалению, в данный момент мне не удается поместить файл index.php в каталог, поскольку он доступен только для чтения, но в других случаях он кажется разумным решением (если вы все еще используете Apache для обработки файлов, а не PHP). –