Пользовательские ошибки 404 с Apache
Я пытаюсь создать пользовательскую ошибку 404 для моего сайта. Я тестирую это, используя XAMPP в Windows.
Моя структура каталогов выглядит следующим образом:
error\404page.html
index.php
.htaccess
Содержимое моего файла .htaccess:
ErrorDocument 404 error\404page.html
Это приводит к следующему результату:
alt text http://i38.tinypic.com/24qk0fk.jpg
Однако это не работает - это как-то связано с тем, как косые черты или как я должен ссылаться на документ с ошибкой?
документы сайта сайта находятся в папке с корнем веб-сайта, если это имеет какое-то значение для того, как я должен ссылаться?
Благодарим вас за продвинутый.
Когда я меняю файл на
ErrorDocument 404 /error/404page.html
Я получаю следующее сообщение об ошибке, которое не входит в файл html, который я связал, но он отличается от того, что указано выше:
alt text http://i32.tinypic.com/kci5b7.jpg
Ответы
Ответ 1
Директива ErrorDocument
при предоставлении локального URL-пути ожидает, что путь будет полностью соответствовать DocumentRoot
. В вашем случае это означает, что фактический путь к ErrorDocument
равен
ErrorDocument 404 /JinPortfolio/error/404page.html
Когда вы исправили его во второй попытке, причина, по которой вы видите эту страницу, заключается в том, что http://localhost/error/404page.html
не существует, поэтому бит о том, что существует ошибка 404 при поиске документа обработки ошибок.
Ответ 2
.htaccess файлы по умолчанию отключены в Apache в связи с проблемами производительности. Когда файлы .htaccess включены, веб-сервер должен проверять его на каждый удар в каждом подкаталоге, из которого он находится.
Просто подумал, что важно отметить. Если вы хотите в любом случае включить файлы .htaccess, здесь ссылка, которая объясняет это:
http://www.tildemark.com/enable-htaccess-on-apache/
Ответ 3
Вместо того, чтобы добавлять их в ваш .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
Ответ 4
Независимо от того, какой URL-адрес вы вводите, поскольку страница 404 по умолчанию должна быть абсолютной или относительной из корневой папки: почему некоторые ошибаются в обработке своего URL-адреса, как URL-адрес переписывающих движков, который относителен к папке, где находится .htaccess.