В моем .htaccess
Я имею
ErrorDocument 404 http://foo.com/404.html
Это работает, в том смысле, что я восстанавливаюсь из любого файла, не найденного ошибкой, и показываю 404 страницы вместо этого, но способ, которым это работает, состоит в том, чтобы перенаправить ошибочный URI с помощью 301 для моего 404.html
страница.
Это плохо, потому что поисковые системы и поисковые роботы не закончат тем, что видели 404 кода, скорее 301 код и не произведут чистку удаленных страниц от своих индексов.
Я могу заставить Apache подать содержание этого 404 страницы на файл, не найденный ошибками, и все же возвратить 404 кода вместо 301?
Вам следует попробовать использовать абсолютный или относительный путь, а не URL-адрес
Мой apache2.conf:
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
Синтаксис:
ErrorDocument <3-digit-code>
где может быть действие,
- Текст для отображения. Заключите текст в кавычки (").
- Внешний URL-адрес для перенаправления.
- Локальный URL-адрес для перенаправления.
Указание на внешний URL-адрес вызовет фактическое перенаправление, тогда как использование локального URL-адреса является внутренним .
Итак, чтобы отобразить содержимое файла, просто укажите на него, например:
ErrorDocument 404 /404.html
Это плохо, потому что поисковые системы и сканеры не увидят код 404, скорее код 301, и не будет удалять удаленные страницы из их индексов .
Если страница использовала , а теперь не существует, правильный код ответа будет 410 Gone . 410 - это код, чтобы сказать «эй, этого не существует», тогда как 404 будет означать только это после неоднократных попыток доступа к несуществующей странице.
Комментарий к ответам Maxence и AD7six (у меня недостаточно репутации на serverfaul, и репутация обмена стеком явно не в счет):
Я только что решил проблему таким образом, но тогда включенные изображения и стили отсутствовали, поскольку URL-адрес по-прежнему является URL-адресом, который пользователь пытался вызвать.
Решение состоит в том, чтобы добавить базовый тег в заголовок документа 404, например
ErrorDocument 404
, или использовать абсолютные URL-адреса с протоколом / доменным именем или без него.