Как управлять индексацией страниц и файлов через HTTP-заголовки?
В данной статье мы рассмотрим что такое HTTP-заголовки, как с их помощью управлять индексацией страниц, указывать каноничные и альтернативные версии страниц на других языках, а также косвенно снижать нагрузку на серверы больших сайтов.
Спойлер: все это используется не часто и в основном в Google. Однако часть этих способов работают в Яндекс и Bing. Также важно знать об HTTP-заголовках при проведении SEO аудита.
Что вообще такое HTTP-заголовки?
HTTP-заголовки (HTTP Headers) - это информация, которой обмениваются сервер и клиент (ваш браузер, например). Обычно в ней содержатся сведения о запрошенной странице, сервере, браузере и многом другом.
Вы можете посмотреть HTTP-заголовки в сервисе bertal.ru, в Chrome по Ctrl+Shift+I и в других инструментах.
Какие полезные для SEO директивы можно передать через HTTP-заголовки?
При помощи HTTP-заголовков ответа сервера можно передавать поисковым системам директивы, важные для индексации страниц сайта. Обычно эти сведения указываются в html коде страниц в разделе head при помощи тегов meta и link (meta robots, canonical, alternate hreflang).
Что можно сообщить поисковым системах с их помощью:
- X-robots-tag - аналог meta robots. Следует ли индексировать страницу и переходить по ссылкам, а также многое другое.
- Canonical - аналог link canonical. Отвечает за указание каноничной страницы, т.е. той, которую следует показывать в Google и других поисковиках.
- Hreflang - аналог link alternate hreflang, отвечает за указание языковой версии страницы и ее альтернатив.
- Обработка запроса If-Modified-Since - изменился ли контент на странице с даты последнего визита бота. Если не изменился, то контент страницы не отдается, что снижает нагрузку на сервер.
Преимущества
1. Сведения из HTTP-заголовков передаются ботам поисковых систем еще до загрузки кода страницы. Соответственно никак не зависят от рендеринга страницы.
2. HTTP-заголовки применяются для управления индексацией не html-файлов.
3. Обработка HTTP-заголовка If-Modified-Since в запросе к серверу оказывает влияние на крупные сайты с большой нагрузкой со стороны умных ботов (которые поддерживают отправку If-Modified-Since) и косвенно ускоряет индексацию новых и обновленных страниц.
Также следует помнить о HTTP-заголовках при проведении SEO аудита и обращать на них внимание при проблемах с индексацией страниц и каноничности. Ведь никогда не знаешь что использовал другой SEO-специалист до тебя.
1. HTTP-заголовок X-Robots-Tag
X-Robots-Tag выглядит в ответе сервера следующим образом:
В данном заголовке указывается тоже самое, что и в теге meta robots. Полный перечень возможных директив см. в первоисточнике .
В каких случаях использовать X-Robots-Tag?
В ряде случаев X-Robots-Tag более полезен, чем meta robots, а иногда и вовсе не имеет альтернатив:
1. Удаление из индекса части разделов сайта и доменов целиком. Бывает, что быстрее на уровне сервера добавить строку в http-ответ, чем работать с бэкэндом.
2. Трудности с настройкой meta name="robots". Например, команда разработчиков занята, утеряны доступы к CMS и т.п.
3. Управление индексацией не html-файлов, например, pdf, xls и так далее. Здесь X-Robots-Tag не имеет альтернатив, ведь meta name="robots" можно использовать только для html страниц.
2. HTTP-заголовок link с атрибутом rel="canonical"
Это полный аналог тега link с атрибутом rel="canonical" в разделе head html кода страницы.
Выглядит в ответе сервера следующим образом:
В каких случаях использовать HTTP-заголовок link с rel="canonical"?
1. Подклейка доменов, разделов или страниц, html код которых недоступен для Google.
Например, на поддомене у вас есть онлайн-приложение на страницы которого ссылается большое количество доменов. Но приложение сделано на скриптах и при запросе страницы Googlebot не получает нужный html код. Как передать ссылочный вес на основной домен в этом случае? Выход - использовать HTTP-заголовок для подклейки страницы туда, где ссылки будут вам более нужны. Однако вероятность подклейки все равно будет далеко не 100%.
2. Указание каноничной версии страницы в случае прочих сложностей настройки тега в head.
3. Указание каноничной версии не html-файлов, например, pdf, xls, png и так далее.
Эту возможность опять же можно использовать для перелива ссылочного веса, особенно если вы размещаете отраслевые отчеты, прогнозы или другую аналитику в pdf и получаете на них много качественных входящих ссылок.
3. HTTP-заголовок link с rel="alternate" и hreflang
Это опять же аналог, но уже мета-тега link с rel="alternate" и hreflang. Поддерживается в Google, в Яндекс и Bing скорее всего не поддерживаются. Используется для указания альтернативных страниц на других языках
Выглядит в ответе сервера как строка, в которой все варианты страницы на разных языках перечисляются через запятую, а их атрибуты - через точку с запятой.
В каких случаях использовать HTTP-заголовок link с rel="alternate" и hreflang
Используется в случае сложностей указания языковых версий другими способами. На всякий случай добавлю, что другие способы - это теги в head html кода и теги xhtml:link в sitemap.xml.
4. Обработка If-Modified-Since в запросе и Last-Modified в ответе сервера
В случае If-Modified-Since речь именно про обработку HTTP-заголовка в запросе к серверу, а не про ответ сервера, как в предыдущих 3 пунктах.
Бот или браузер отправляет серверу запрос, содержащий в заголовке If-Modified-Since дату и время последнего сканирования страницы. Если запрашиваемая страница не была обновлена за это время и на сервере настроена обработка If-Modified-Since, то по запросу отдается статус HTTP 304 (Not Modified) без html кода страницы.
Таким образом экономится ресурс сервера и эта экономия становится заметной если на сайте более 500К-1М страниц. Если же страницы была изменена (был обновлен контент), то отдается HTTP код 200 (OK) и код страницы для скачивания и последующей переиндексации.
Соответственно и в HTTP-заголовке ответа сервера Last-Modified должна передаваться корректная дата изменения страницы.
В ответе сервера Last-Modified выглядит следующим образом:
Пост Джона Мюллера о данных HTTP-заголовках:
Ссылка на сообщение, а также официальная информация от Google.
В хелпе Яндекса содержится аналогичная информация:
Следите за корректностью HTTP-заголовков. В частности, важно содержание ответа, который сервер отдает на запрос «if-modified-since» . Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа.
Заключение
В большинстве случаев для SEO целей рекомендуется настраивать теги в разделе html кода страниц. Но если это сделать невозможно, а также в некоторых специфических случаях, настройка HTTP-заголовков ответа сервера будет хорошей помощью SEO специалисту.
Настройка отдачи Last-Modified и обработки If-Modified-Since может снизить нагрузку на ваш сервер и серверы поисковых ботов, что косвенно может положительно повлиять на ускорение индексации новых страниц и переиндексации имеющихся.
П.С. Заглядывайте на мой канал о зарубежном SEO https://t.me/goburzhseo, где я в более краткой форме делюсь информацией и практическими советами по продвижению в Google