Как избежать потерь трафика при нарушениях работы сайта?
Поводом для написания этой статьи стала совершенно реальная история. Предыстория проста: небольшой интернет-магазин туристического снаряжения, продвигается много запросов на множество целевых документов. В результате некорректной работы скрипта (скрипт восстановления из бекапа у хостера) была уничтожена база данных. Администраторы сайта и хостинга не имели актуального бекапа. Сайт, фактически, перестал работать: страницы отображались, но не содержали данных о товарах и т.д.
Если не предпринять экстренных мер, поисковые системы переиндексируют "новое" содержимое сайта (сообщения об ошибках и т.п.), в результате этого позиции по запросам и целевой трафик будут потеряны.
Итак, стояла задача - сохранить позиции по запросам и трафик из поисковых систем на время восстановления сайта.
Технические особенности индексации сайтов.
Поисковый робот действует на основании http-статуса, которым веб-сервер предваряет выдачу любого документа. Статусы бывают разными, реакция робота также будет различной. Если все в порядке, веб-сервер возвращает статус 200. Роботы поисковых систем трактуют код 200 как команду к переиндексации документа.
В других случаях реакция робота может быть другой, например:
| Код | Ошибка | Реакция робота Яндекса | ||
|---|---|---|---|---|
| 301 | Ресурс перемещен навсегда | Исходный URL со временем заместится в выдаче поисковой системы новым адресом. Накопленный ссылочный вес будет передан со старого документа на новый. |
||
| 404 | Ресурс не найден | Документ исключается из индекса поисковой системы. | ||
| 503 | Служба недоступна | Ничего не происходит, робот повторит попытку обращения позже. |
Справочник по кодам статуса HTTP (Яндекс)
Как сохранить документы в выдаче и предотвратить переиндексацию?
Самый простой вариант - сообщить роботу статус 503 при запросе любого документа и выдать страницу-заглушку, на которой привести контактную информацию и извинения за проблемы. В этом случае робот не будет переиндексировать "новое" содержание документов и просто "зайдет позже". Для простоты будем считать, что мы работаем со стандартным Linux-хостингом на базе веб-сервера Apache, который поддерживает php. Впрочем, подход работает и в случае с windows-хостингом, отличия лишь в реализации.
Итак, нужно сделать две вещи:
- Изготовить страницу-заглушку.
Заглушка - это php скрипт, выполняющий две задачи - вывести http-статус 503 и показать html документ с контактами и сообщением об аварии. Содержимое заглушки (файл 503.php) примерно следующее:
<?phpob_start();header('HTTP/1.1 503 Service Temporarily Unavailable');header('Status: 503 Service Temporarily Unavailable');header('Retry-After: 3600');header('X-Powered-By:');?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>yoursite.ru</title></head><body><h1>Рады видеть вас, но у нас авария :-(</h1><p>Из-за технических проблем с хостингом наш сайт временнно не работает.</p><p>Мы делаем все возможное, чтобы скорее восстановить его.</p><p>Мы дорожим нашими клиентами, поэтому ввели дополнительный номер (XXX) YYY для связи и скидку 10% для заказа по телефону - звоните, все решим!</p><p>Спасибо за понимание ;)</p></body></html>
- Обеспечить вывод этой страницы в ответ на любой запрос роботов поисковых систем.
Проще всего поступить так: поскольку страницы выводятся некорректно, проще всего временно переименовать
каталоги верхнего уровня (например, /info, /catalog и т.п.). Это можно сделать быстро. Результат - веб-сервер будет считать, что документ не найден. Перенастроим Apache так, чтобы он обрабатывал ошибку 404, выводя сделанную нами заглушку со статусом 503. Для этого нужно добавить в .htaccess (расположенный в корневом каталоге веб-сайта) следующий код:
ErrorDocument 404 /503.php
Все :)
Некоторые источники (например, http://www.askapache.com/htaccess/503-service-temporarily-unavailable.html) приводят код для сообщения статуса 503 только роботам поисковых систем. На мой взгляд, это не вполне корректно и может быть расценено как клоакинг. Есть проблема - нужно честно сообщать 503 всем - и посетителям, и роботам. Тем более, что возможность вывести произвольный текст для информирования посетителей никто не отменял.
Нужно отметить, что вышеописанным способом удалось удерживать страницы в индексе Яндекса и Гугла на прежних позициях в течение 2 недель, потребовавшихся на запуск новой версии сайта (это оказалось проще, чем восстановить старую версию ;). Мораль ясна - не забывайте про бекапы, независимо от авторитетности хостера.
Удачи!
Михаил Сливинский,
Эксперт-аналитик Bakuhatsu.ru
