Я могу заставить Apache ErrorDocument возвратиться 404 вместо 301?

В моем .htaccess Я имею

ErrorDocument 404 http://foo.com/404.html

Это работает, в том смысле, что я восстанавливаюсь из любого файла, не найденного ошибкой, и показываю 404 страницы вместо этого, но способ, которым это работает, состоит в том, чтобы перенаправить ошибочный URI с помощью 301 для моего 404.html страница.

Это плохо, потому что поисковые системы и поисковые роботы не закончат тем, что видели 404 кода, скорее 301 код и не произведут чистку удаленных страниц от своих индексов.

Я могу заставить Apache подать содержание этого 404 страницы на файл, не найденный ошибками, и все же возвратить 404 кода вместо 301?

2
задан 24 November 2014 в 17:01
3 ответа

Вам следует попробовать использовать абсолютный или относительный путь, а не URL-адрес

Мой apache2.conf:

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
3
ответ дан 3 December 2019 в 09:04

Не указывать на внешний URL-адрес

В документах Apache указано :

Синтаксис:

 ErrorDocument <3-digit-code> 
 

где может быть действие,

  • Текст для отображения. Заключите текст в кавычки (").
  • Внешний URL-адрес для перенаправления.
  • Локальный URL-адрес для перенаправления.

Указание на внешний URL-адрес вызовет фактическое перенаправление, тогда как использование локального URL-адреса является внутренним .

Итак, чтобы отобразить содержимое файла, просто укажите на него, например:

ErrorDocument 404 /404.html

Используйте правильный код состояния для задания

Это плохо, потому что поисковые системы и сканеры не увидят код 404, скорее код 301, и не будет удалять удаленные страницы из их индексов .

Если страница использовала , а теперь не существует, правильный код ответа будет 410 Gone . 410 - это код, чтобы сказать «эй, этого не существует», тогда как 404 будет означать только это после неоднократных попыток доступа к несуществующей странице.

4
ответ дан 3 December 2019 в 09:04

Комментарий к ответам Maxence и AD7six (у меня недостаточно репутации на serverfaul, и репутация обмена стеком явно не в счет):

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

Решение состоит в том, чтобы добавить базовый тег в заголовок документа 404, например

ErrorDocument 404

, или использовать абсолютные URL-адреса с протоколом / доменным именем или без него.

0
ответ дан 3 December 2019 в 09:04

Теги

Похожие вопросы