Всегда возвращайте 404, если вы решили вернуть 403

Здесь уже размещено несколько вопросов о возврате 404 вместо 403 в особых случаях (например, файлы .ht* или определенный каталог), но я не могу придумать, как просто заменить все403 ответа («Хорошо, он существует, но вам все равно нужно найти способ войти») на 404 («Извините, никогда не слышал об этом»). Я надеюсь, что есть простое решение, которое не потребует обновления регулярных выражений или других битов .htaccess для соответствия изменениям сайта, просто простая директива: «всякий раз, когда вы решите вернуть 403, вместо этого верните 404», которая применима на весь сайт, независимо от изменений конфигурации.

Затем, если файл .htaccess верхнего уровня содержит «Options -Indexes», а какой-либо данный каталог не содержит index.html (или эквивалентный), пустой URL-адрес каталога вернет 404, но если я когда-либо добавлю index.html в этого каталога, тот же пустой URL-адрес каталога вернет index.html без каких-либо обновлений, необходимых для любого файла .htaccess.

Меня даже не волнует, что если я когда-нибудь запаролю каталог, неверный пароль вернет ошибку 404 (из-за отображения 404 -> 403). В таком случае я ничего не скрываю, возвращая 404, но и вреда это не причиняет. Если есть способ ОТМЕНИТЬ общее сопоставление 403->404 для особых случаев (а не СДЕЛАТЬ его для особых случаев), это может быть даже полезнее.

Конечно, если я что-то упускаю из виду, пожалуйста, поправьте меня.

РЕДАКТИРОВАТЬ: Драт. Я пытался написать здесь качественный вопрос, но мое описание поведения «Параметры-индексы» во втором абзаце оказалось неверным. Без этой строки пустой URL-адрес каталога показывает «index.html», если он существует в каталоге; в противном случае он показывает содержимое каталога. (Эта переадресация /dir в /dir/index.html, если index.html существует, является настройкой веб-хоста по умолчанию, если я не ошибаюсь.) Добавление строки «Options -Indexes» останавливает показ моего белья публично ( возвращает 403, а не 404, но все же лучше, чем показывать содержимое каталога), но теперь пустой URL-адрес каталога возвращает 403, даже если index.html существует.

Я бы хотел, чтобы голый URL-адрес каталога «mysite.com/mydir» отображал /mydir/index.html, если он существует, и «404», если нет, но очевидно, что это нечто большее, чем просто замена 403 на 404.

17
задан Glen 9 May 2012 в 07:13
поделиться