Научный консалтинг
Главная
Контакты
Номер телефона
Как мы работаем
Гарантии
Условия
Цены

Последнее обновление:

Как устранить ложную ошибку 404 на сайте

Что такое ошибка 404

Ошибка 404 выдается сервером при запросе несуществующей страницы вебсайта. Т.е. при неверном запросе, когда сервер не может вернуть ни одной страницы, которая соответствовала бы запросу, он выдает код состояния (ошибку) 404. При этом, по умолчанию, сервер выдает (браузеру) некую стандартную страницу соответствующего хостинга. Если посетитель сайта вдруг сделает неверный запрос – например, путем ввода неверного URL в адресную строку или перейдет по неверной ссылке – он увидит в окне браузера эту страницу.

Ложная ошибка 404 – это ситуация, когда на сервер поступает неверный запрос, он выдает клиенту (браузеру) также ошибочную страницу, но при этом код состояния сервер возвращает не 404, а 200 ОК.

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

Для того, чтобы при любом неверном запросе сайт (сервер) отдавал страницу ошибки (например, 404.html), необходимо сделать соответствующие настройки. Один из путей состоит в следующем. В файле .htaccess, находящемся в корневом каталоге сайта, следует прописать так называемый редирект 404:

ErrorDocument 404 Адрес страницы ошибки

При этом адрес может быть как абсолютным (с указанием протокола и домена хостинга), так и относительным. Примеры:

Абсолютный редирект 404:

ErrorDocument 404 http://site.ru/404.html

Относительный редирект 404:

ErrorDocument 404 /404.html

Казалось бы, оба варианта – правильные

Действительно, работать-то будут оба. Однако, между ними есть определенная разница. Если указывать абсолютный редирект (т.е. ErrorDocument 404 http://site.ru/404.html), то сервер будет считать, что редирект происходит на ДРУГОЙ домен. Несмотря на то, что домен-то, приписанный в редиректе, может быть тем же самым.

При этом, вместо ошибки 404, сервер выдаст код состояния 200 ОК и отдаст браузеру страницу 404.html (на которой так или иначе будет указано, что страница, соответствующая запросу, не существует). Это будет выглядеть так, как будто бы вместо неверного запроса клиент (например, браузер) запросил конкретно эту страницу САМ. При всей нелогичности (для случая одного и того же домена), это – так. Это и есть ложная ошибка 404.

Если же редирект относительный (ErrorDocument 404 /404.html), то тогда поведение сервера может быть немного иным. В адресной строке будет присутствовать соответствующий неверный запрос (т.е. ошибочный URL, на сервере нет страницы, соответствующей ему), а в окне браузера отобразится содержимое страницы ошибки, т.е. страницы 404.html.

Вроде бы, разница небольшая

Для посетителей сайта, по-видимому, разницы, в самом деле, нет, если не обращать внимание на содержимое адресной строки. В обоих случаях они увидят страницу ошибки, т.е. содержимое страницы 404.html. Однако, поисковики (например, Google) считают иначе. Вот что пишут создатели сервера Apache: «когда Вы определяете ErrorDocument, который указывает на удаленный URL (т.е. что-либо с методом, таким как http перед ним), Apache Сервер HTTP отправит редирект клиенту, чтобы сказать ему, где найти документ, даже если документ заканчивает тем, что находился на том же сервере. Это имеет несколько последствий, самое важное существо, что клиент не получит оригинальный ошибочный код состояния, но вместо этого получит код состояния редиректа». Это означает, что клиент будет делать ПОВТОРНЫЙ запрос, после получения редиректа, уже на страницу 404.html.

Читаем дальше: «Это, в свою очередь, может внести путаницу для поисковых роботов и других клиентов, которые пытаются определить, является ли URL допустимым использованием кода статуса. Кроме того, если Вы будете использовать удаленный (т.е. абсолютный) URL в ErrorDocument 401, клиент не будет знать, чтобы предложить пользователю пароль, так как это не получит 401 код статуса. Поэтому, если Вы используете директиву ErrorDocument 401, тогда она должна обратиться к локальному документу».

Вот почему, к примеру, Google, при применении абсолютного редиректа (см. выше), сообщает о ложной ошибке 404, присутствующей на сайте. Поэтому лучше использовать относительный редирект.

Кстати, браузер Internet Explorer почему-то игнорирует сообщения сервера об ошибках, заменяя их «дружественными» (т.е. на свои собственные). Не игнорирует он их только если сообщения превышают размер 512 Байт.

Комментарии:
Всего комментариев:0
Пожалуйста, не забудьте ознакомиться с правилами оставления комментариев.



Подписаться на комментарии на этой странице

Мы можем выполнить

Другие услуги
Интересная и полезная
информация