Спасительный код ответа 503
Каждому из владельцев сайтов периодически приходится проводить какие-то технические работы по настройке, профилактике и обновлению своих сайтов, и блоггеры – не исключение, движок WordPress’а меняется довольно часто. Однако, казалось бы, такое простое действие, хранит в себе скрытую угрозу. Какую же? Представьте, что вы, ничего не подозревая, копируете обновленные файлы или переносите что-то куда-то и в этот момент ваш сайт вздумал посетить его величество бот. И что он может получить? Как минимум 404 File Not Found ошибку, как максимум 500 Internal Server Error. В ответ на такое «неуважение» бот может «обидеться» и занести страницу в «черный список», что в конечном итоге может привести к потери ее позиции в результатах поиска, а в случае, если этот бот Google, то и потери pagerank’а. Не очень хорошая перспектива, не так ли?
А что, если взять и каким-нибудь способом сообщить поисковому роботу, что сайт в данный момент немного не работоспособен и «попросить» бота зайти попозже? И к счастью такой способ есть!
Вот, что говорится на блоге Google Webmaster Central:
Если мой сайт находится на техническом обслуживании, как я могу сообщить Googl’у о том, что ему следует зайти на сайт позже, чтобы проиндексировать страницу, которая в данный момент недоступна?
Вы должны скофигурировать свой веб-сервер так, чтобы он обрабатывал ошибку 503 Service Temporarily Unavailable, т.е. возвращал код 503 вместо обычного 200. Это даст понять Googlebot’у, что сервер в принципе рабочий и он может зайти на страницу позже.
Для настройки сервера можно воспользоваться , чтобы отдать Googlebot’у и/или другим ботам заголовок 503 Service Temporarily Unavailable или создать некоторый программный код. В дополнение необходимо передать заголовок Retry-After
для указания временного интервала, по истечении которого, роботу стоит посетить страницу.
Что такое 503 Service Temporarily Unavailable
Сервер в данный момент недоступен для обработки запроса вследствие перегрузки или технических работ на нем. Подразумевается, что это временное явление, которое завершится через определенное время. Время может быть указано посредствоv заголовка
Retry-After
. Если заголовокRetry-After
не указан, то клиент вынужден будет рассматривать ответ сервера как ошибку 500 Internal Server Error.
Что такое Retry-After
Заголовок ответа
Retry-After
может использоваться совместно с ответом a 503 Service Temporarily Unavailable, чтобы указать как долго запрашиваемый сервис будет недоступен для клиента. Этот заголовок может быть использован с любым 3xx (Redirect) ответом для указания минимального времени, которое клиенту необходимо будет подождать прежде, чем выполнить перенаправление. Значение этого параметра может задаваться как в формате HTTP-даты или же как целое количество секунд.
Примеры:
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT Retry-After: 120
Отсылаем 503 ошибку только Googlebot’у
В файл вносим следующие строки:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^.*(Googlebot|Googlebot|Mediapartners|Adsbot|Feedfetcher)-?(Google|Image)? [NC]
# or RewriteCond %{HTTP_USER_AGENT} ^.*google.* [NC]
RewriteRule .* /503.php
Отсылаем 503 ошибку роботам, а людям страницу об ошибке
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^.*(Googlebot|Googlebot|Mediapartners|Adsbot|Feedfetcher)-?(Google|Image)? [NC] RewriteCond %{REQUEST_URI} !^/503\.php [NC] RewriteRule .* /503.php RewriteCond %{REMOTE_HOST} !^XXX\.XXX\.XXX\.XXX RewriteCond %{REQUEST_URI} !^/404\.php [NC] RewriteRule .* /under-development-explain.html [R=302,L]
Ниже приведен пример, как реализовать обработку ошибки 503 с помощью языка программирования (в данном случае PHP):
ob_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>503 Service Temporarily Unavailable</title>
</head><body>
<h1>Сайт временно недоступен</h1>
<p>Сайт временно недоступен в связи с техническими работами, проводимыми на сервере.
Пожалуйста посетите наш сайт позже.</p>
</body></html>
Надеюсь, теперь ваши блоги станут немного защищенные.