Отключить списки каталогов с 404 вместо 403
Я отключил списки каталогов, как так...
Options -Indexes
Когда я пытаюсь получить доступ к каталогу, как это:-
www.example.com/secret/
Я получаю 403 Запрещенный ответ.
Однако мне нужен ответ 404 Not Found, чтобы хакеры не могли так легко угадать мою структуру каталогов. Как бы я это сделал?
5 ответов
Включите mod_rewrite и AllowOverride в / секретном. Затем создайте.htaccess:
RewriteEngine On
RewriteBase /secret
RewriteRule ^$ - [R=404,L]
Я искал в интернете ответ на аналогичную проблему. Хотя mod_rewrite является возможным решением, я считаю, что лучшее решение использует директиву RedirectMatch.
См. StackOverflow: проблема с перенаправлением 403 запрещено 404 не найден
Создайте собственный сценарий 403, который вместо этого возвращает ошибку 404.
Например, в PHP:
<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>
Теперь настройте Apache для использования этого скрипта для 403 результатов:
ErrorDocument 403 /403.php
Нет переписывает переписывает, и он мгновенно работает для всего сервера.
Мое решение прекратить отображать содержимое каталога в виде списка и отображать ошибку 404 просто. Создайте файл.htaccess в корневом каталоге вашего проекта и напишите, какие каталоги должны быть защищены.
Структура каталогов
- your_root_directory
- .htaccess
- 404.html
- index.html
- app
- other files I do not want to show
- models
- other files I do not want to show
.htaccess
RewriteEngine On
RewriteRule ^app/ - [R=404,L]
RewriteRule ^models/ - [R=404,L]
ErrorDocument 404 /your_root_directory/404.html
Вторая строка.htaccess запрещает доступ к элементам списка в каталоге приложения и всех его подкаталогах.
Третья строка.htaccess запрещает доступ к элементам списка в каталоге моделей и всех его подкаталогах.
Четвертая строка.htaccess устанавливает нашу собственную ошибку 404 (если вы не хотите показывать ошибку по умолчанию apache).
Не забудьте очистить кеш в вашем браузере при работе с htaccess.
Используйте.htaccess для маскировки ошибок. Смотрите это руководство: