#php #apache #.htaccess #mod-rewrite #redirect
#php #apache #.htaccess #мод-перезапись #перенаправление
Вопрос:
У меня есть несколько папок, таких как php_includes
templates
и несколько других, и я добавляю .htaccess
файл для них всех. Пока что то, что у меня есть, работает, если пользователь пытается напрямую получить доступ к файлу в адресной строке, но я бы предпочел, чтобы он отправил его на страницу 404.
IndexIgnore *
# no one gets in here!
deny from all
#error 404
ErrorDocument 404 /error/404.html
Что-то не так с моим .htaccess
Все, что я чувствую, что происходит, — это то, что вместо запрета от all вступает во владение, поэтому 404 не будет работать напрямую. Хотя я пробовал это с другим .htaccess
файлом для основного сайта, и 404 там тоже не работает.
То же ErrorDocument
, что и у других, но вот как настроен мой каталог
-.htaccess
--public_html
--error
--404.html
--admin
Так что, возможно, я либо получаю ErrorDocument
неверное для моего .htaccess
этого, либо у меня неверный каталог path. Может кто-нибудь, пожалуйста, объяснить, в чем здесь проблема?
примечание, которое я использую, 000webhost
если это имеет значение, иногда я вижу, что они делают какие-то глупости, и это всего лишь тестовый сервер.
Ответ №1:
Поскольку вы используете deny
директиву, она отправляет код ошибки 403
.
Объявите свой пользовательский обработчик для 403
:
ErrorDocument 403 /error/404.html
Комментарии:
1. Спасибо, я обязательно попробую это. Мне нужно выучить свои коды ошибок 🙂
2. Привет, анубхава. Поскольку мой тестовый каталог состоит из трех этапов, должен ли я изменить 403 ErrorDocument на что-то вроде
../../../error/404.html
3. Неважно, это ошибка моей HTML-страницы. Вместо относительных путей используются абсолютные пути. Моя ошибка. Спасибо, ты добрый друг.
Ответ №2:
Директива deny from all выдаст ошибку 403. Итак, просто сделайте это
ErrorDocument 403 /error/404.html