Как остановить вспомогательную директорию, наследующую правила родительского htaccess
В моем основном каталоге public_html есть следующие правила .htaccess:
Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
Проблема заключается в том, что у меня есть подкаталог с именем source, и я хочу, чтобы этот каталог просто отображал файлы внутри него (потому что нет индексного файла). Проблема заключается в том, что вышеупомянутый родительский каталог правил htaccess не приводит к тому, что в каталоге не отображаются файлы в источнике (он просто перечисляет пустой индекс).
Как я могу это решить?
спасибо
Ответы
Ответ 1
Измените свой .htaccess следующим образом:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# if request is not for the /sub-dir/
RewriteCond %{REQUEST_URI} !^/sub-dir/ [NC]
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
Ответ 2
Это может быть очевидным, и вы уже пробовали - но вы создали файл .htaccess в подпапке, представляющей интерес? Любые настройки в этом файле переопределяют эквивалентные настройки в корневой папке.
UPDATE:
Для файла root.htaccess вместо
IndexIgnore */*
... пытаться
Options -Indexes
Затем в файле подпапки .htaccess поместите эту единственную строку:
Options +Indexes
Достигает ли этого желаемого эффекта?