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