Отключить списки каталогов с 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 для маскировки ошибок. Смотрите это руководство:

http://www.tarahost.net/pages/web-design/29371.php

Другие вопросы по тегам