Я отключил списки каталогов вот так ...
Options -Indexes
Когда я пытаюсь получить доступ к такому каталогу: -
www.example.com/secret/
Я получаю 403 Запрещено ответ.
Однако я хочу 404 Не Найдено ответ, поэтому хакеры не могут так легко угадать мою структуру каталогов. Как мне это сделать?
Включите mod_rewrite и AllowOverride в / secret. Затем создайте .htaccess:
RewriteEngine On
RewriteBase /secret
RewriteRule ^$ - [R=404,L]
Я поискал в Интернете ответ на аналогичную проблему. Хотя mod_rewrite - возможное решение, я считаю, что лучшее решение использует директиву RedirectMatch.
Видеть StackOverflow: проблема с перенаправлением 403 Forbidden на 404 Not Found
Создайте собственный сценарий 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, чтобы замаскировать ошибки. См. Это руководство: