Соответствующая часть моего .htaccess выглядит так:
Options -Indexes
<FilesMatch include>
Order allow,deny
Deny from all
</FilesMatch>
RedirectMatch 404 ^/include(/.*)$
И он генерирует следующие ответы:
- / включает 403
- / включить / 404
- / include / config.inc 403
По шаблону я могу сказать, что проблема, скорее всего, в (/.*) части, но все, что я пробовал, дает мне те же результаты; вместо того, чтобы последовательно получать 404, я получаю 404 для одного случая и 403 для всего остального Что не так с выражением, которое я использую? В качестве альтернативы, поскольку я должен сделать это для нескольких каталогов, существует ли общий подход, который позволил бы мне преобразовать все 403 ответа в 404?
ОБНОВЛЕНИЕ: Я обнаружил, что, удаляя FileMatch, я получаю лучшие результаты, поэтому мой .htaccess теперь выглядит так:
Options -Indexes
RedirectMatch 404 ^/include(/.*)?$ # Added dlamblin's first suggestion
И генерирует следующие ответы:
- / включает 404
- / включить / 404
- / include / config.inc 403
ОБНОВЛЕНИЕ: Интересно, что я обнаружил, что следующее производит различный вывод:
RedirectMatch 404 ^/include(/?|/.*)$
RedirectMatch 404 ^/template(/?|/.*)$
Шаблон шаблона работает во всех случаях, однако, все еще включается генерирование 403 для всех включаемых файлов (например, /include/config.inc) Может ли это быть проблемой с именем каталога, а не проблемой с .htaccess сам файл?
ОБНОВЛЕНИЕ: Следующее в моем .htaccess конфликтовало с перенаправлением при доступе к /include/config.inc.
<FilesMatch config>
Order allow,deny
Deny from all
</FilesMatch>