Делаем правильные HTTP заголовки 404

Идея не заставился себя долго ждать. Возможно, подумал я, проблема в файле htaccess Открыл его и кое что начало проясняться ErrorDocument 404 ipmoney.info

Для вас уже далеко не секрет, что у меня имеются несколько проектов в Сети. По мере необходимости я исправляю ошибки, да и просто наблюдаю за ними в Яндекс.Вебмастере. Всегда лучше перестраховаться заранее, чем обнаружить сбой в неподходящее время.

Недавно мое внимание снова привлек Яндекс. На этот раз в списке проиндексированных страниц он показывал несколько раз главную. Я задался тогда вопросом: в чем же причина такого странного отображения?

Делаем правильные HTTP заголовки 404

Недоумевая о ситуации, я было подумал, что у меня недостаточно сильный хостинг, чтобы «тянуть» ресурсы и поисковый робот из-за этого не справляется с загрузкой всех страниц. Поэтому я решил сменить хостера и, немного подождав, не обнаружил каких-либо сдвигов. Проблема осталась на том же месте.

Было принято решение работать с кодом, обеспечив сервер нового хостера меньшими требованиями к скорости. Открыв файл robots.txt, я вставил важную для этого процесса директиву Crawl-delay: 3. С помощью нее поисковые роботы не загружают все страницы ресурса одновременно, а распределяют команду между страницами с интервалом в 3 секунды.

Такую директиву возможно реализовать только с поисковиком Яндекс. К сожалению, Google ее попросту не замечает и загружает ресурс полностью. Иными словами, если ваш сайт имеет высокий индекс посещаемости, сервер не будет перегружен. Увы, но и в этот раз вопрос дуального индексирования главной страницы не исчерпал себя.

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

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

ErrorDocument 404 https://ipmoney.info/
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ipmoney\.info$ [NC]
RewriteRule ^(.*)$ https://ipmoney.info/$1 [R=301,L]
Options All -Indexes

Это оно! Читаем строчку:

ErrorDocument 404 https://ipmoney.info/

Дело заключалось в том, что когда возникала ошибка 404 (нет документа), ресурс переадресовывает пользователя на главную страницу https://ipmoney.info/. Именно так было задумано мной для того, чтобы страницы вида «/имя-с-ошибкой», т.е. неправильно набранные, выводили главную страницу сайта.

Догадались? Главный момент заключался в директиве, где был указан абсолютный адрес веб-страницы. Поэтому алгоритм 404 ошибки провоцировал переадресацию и выдачу 302 заголовка, обозначающего временный перенос файла.

Иными словами, поисковая машина обращалась к изъятой странице и получала команду: направляйся на главную, пока этой страницы нет на сервере. Главная страница индексировалась повторно, выдавая лицо блога, там самым снижая ее выдачу из-за дубликата.

Затем я заменил строку следующего кода:

ErrorDocument 404 https://ipmoney.info/

на

ErrorDocument 404 /?p=01

Ожидать новой индексации было бы долго, а проверка требовалась именно сейчас. По идее, код был исправлен и ресурс должен был работать правильно, но действовать надо было уже сейчас.

Надо было найти сервис, проверяющий заголовки сайта, когда тот отвечает на запросы к разным страницам. В итоге такой сервис был найден, хотя это составило еще того труда и стаканчика хорошего кофе.

Оказалось, работать с ним приятно и просто — я ввел следующий список «урлов», чтобы проверить правильность собственных действий:

https://ipmoney.info
https://ipmoney.info/?p=500
https://ipmoney.info/123/123
https:////ipmoney.info

Ответ был таков:
200
200
404
301

Да, я сделал это! Облегчение и удовлетворенность расслабили мое тело и разум — все верно.

Впрочем, если эти строки кода до сих пор представляются вам чем-то загадочным

Если не понятно зачем нужны строки

RewriteCond %{HTTP_HOST} ^ipmoney\.info$ [NC]
RewriteRule ^(.*)$ https://ipmoney.info/$1 [R=301,L]

советую почитать о сохранении ссылочной популярности.