перенаправление правила перезаписи .htaccess на страницу 404

#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