Кастомные ошибки 404 с Apache - PullRequest
       22

Кастомные ошибки 404 с Apache

24 голосов
/ 03 августа 2010

Я пытаюсь создать пользовательскую ошибку 404 для моего сайта. Я тестирую это с помощью XAMPP в Windows.

Моя структура каталогов выглядит следующим образом:

error\404page.html
index.php
.htaccess

Содержимое моего файла .htaccess:

ErrorDocument 404 error\404page.html

Это дает следующий результат:

альтернативный текст http://i38.tinypic.com/24qk0fk.jpg

Однако это не работает - это как-то связано с тем, как выглядит косая черта, или как я должен ссылаться на документ об ошибке?

Документы сайта находятся в подпапке корневого каталога, если это имеет какое-либо значение для того, как я должен ссылаться?

Спасибо заранее.

Когда я изменяю файл на

ErrorDocument 404 /error/404page.html

Я получаю следующее сообщение об ошибке, которое не совпадает с указанным в html-файле, но оно отличается от перечисленного выше:

альтернативный текст http://i32.tinypic.com/kci5b7.jpg

Ответы [ 4 ]

57 голосов
/ 03 августа 2010

В директиве ErrorDocument при указании локального URL-пути ожидается, что путь будет полностью определен из DocumentRoot. В вашем случае это означает, что фактический путь к ErrorDocument равен

ErrorDocument 404 /JinPortfolio/error/404page.html

Когда вы исправили это во второй попытке, вместо этого вы видите, что страница состоит в том, что http://localhost/error/404page.html не существует, поэтому бит о том, что в документе обработки ошибок есть ошибка 404.

11 голосов
/ 03 августа 2010

.htaccess файлы по умолчанию отключены в Apache из-за проблем с производительностью.Когда файлы .htaccess включены, веб-сервер должен проверять его при каждом обращении в каждом подкаталоге, из которого он находится.

Просто подумал, что это важно отметить.Если вы все равно хотите включить файлы .htaccess, вот ссылка, объясняющая это:

http://www.tildemark.com/enable-htaccess-on-apache/

4 голосов
/ 31 марта 2016

Вместо добавления их в ваш файл .htaccess, вы можете добавить их в любой из ваших файлов виртуального хоста.

<VirtualHost *:80>

    DocumentRoot /var/www/mywebsite

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ErrorDocument 404 /error-pages/404.html
    ErrorDocument 500 /error-pages/500.html
    ErrorDocument 503 /error-pages/503.html
    ErrorDocument 504 /error-pages/504.html

</VirtualHost>

Где error-pages - это подпапка в папке mywebsite, содержащаяПользовательские страницы ошибок.Убедитесь, что вы перезапускаете ваш Apache, чтобы просмотреть изменения.

$sudo /etc/init.d/apache2 reload
1 голос
/ 11 мая 2013

Независимо от того, какой URL вы вводите в качестве страницы 404 по умолчанию, он должен быть либо абсолютным, либо относительным из корневой папки: поэтому некоторые допускают ошибку, трактуя его URL как URL перезаписывающего движка, который является относительным из папки, в которой находится .htaccess .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...