Используйте mod_rewrite для создания пользовательского индекса каталога в Apache
Итак, список каталогов Apache по умолчанию отстой, а параметры настройки mod_autoindex - отстой, поэтому я решил, что могу написать некоторые правила перезаписи в корне моего сервера, чтобы перенаправить любые запросы в каталог:
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{REQUEST_URI} -d
RewriteRule .* /index.php?dir=$0
</IfModule>
Теперь у меня создается впечатление, что это работает хотя бы немного, как отключение indexes
все еще уходит localhost
доступный (он отображает index.php), однако он, похоже, не достигает подкаталогов (которые либо возвращаются к индексам каталогов Apache, если indexes
вариант включен, или дать 403
если они выключены).
У меня вопрос: могу ли я заставить это правило применяться глобально или мой поиск красивых индексов каталогов обречен на провал?
Изменить: я должен отметить: вышеуказанные правила содержатся в .htaccess
в корне сервера.
Изменить: в идеале решение, если оно существует, все равно будет иметь DirectoryIndex
функциональность (то есть index.php
и т.д. будет отображаться, если он существует),
1 ответ
-d
Проверка каталога работает только с абсолютными путями файловой системы. Так что либо укажите абсолютный путь к файловой системе (например, используя %{DOCUMENT_ROOT}%{REQUEST_URI}
или же %{REQUEST_FILENAME}
напрямую) или использовать -D
это делает дополнительный подзапрос для разрешения пути URI к пути файловой системы. Я бы предпочел:
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* /index.php?dir=$0