Замените mod_autoindex индексатором PHP во всех каталогах, не добавляя index.php во все из них

Мне нравится возможность автоматической индексации папки, чтобы я мог обслуживать большое количество файлов, не добавляя ссылки на страницу все время. Однако мне не нравится окно входа в httpAuth, которое поставляется с использованием.htaccess для защиты каталога. Плюс есть еще функции, которые я хотел в моих индексах. Поэтому я написал PHP-скрипт для генерации индексов так, как я хочу, чтобы я мог контролировать все с помощью PHP, хранить пользователей в SQL, добавлять дополнительные ссылки в мой файловый редактор и входить в систему с красивой веб-формой.

Проблема в том, что любому новому каталогу нужен файл index.php, который включает скрипт, или я просто получаю индексы apache. Что означает копирование однострочного файла index.php в каждый каталог. Я мог бы сгенерировать его с помощью PHP, но если я работаю с FTP для управления файлами, это не решит всех проблем. Есть ли способ настроить apache для отображения моего индексного скрипта в любом каталоге, который не имеет собственных индексных файлов? Так что он действует так же, как mod_autoindex? Но с моим собственным сценарием.

1 ответ

Решение

Поместите index.php в свой корень, затем используйте редирект

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d #if directory exists
RewriteRule . /index.php [L]

Тогда внутри index.php используйте $_SERVER['REQUEST_URI'] чтобы выяснить, какая папка была запрошена, затем используйте PHP для отображения того, что вы хотите отобразить, например, используя opendir, readdirи т. д. (не забудьте обработать файлы Unix '.' и '..')

Другие вопросы по тегам