АКТУАЛЬНО:

Проверяем и оптимизируем HTTP-заголовки сайта

О чем будет сегодняшний блог? О HTTP-заголовках. Таком, на первый взгляд, не существенном, но, как оказывается, достаточно важном. Я решил проверить несколько клиентских сайтов. И начал с проверки именно кодов ответа сервера, HTTP-заголовков. Признаюсь, честно, ужаснулся. Дальше расскажу почему, а также как и зачем скрывать лишние http-заголовки, что они означают и на что влияют.

Многие SEO-специалисты, к сожалению, забывают о HTTP-заголовках или просто игнорируют их. А по факту: некоторые HTTP-заголовки не только бессмысленны, но и существенно ухудщают кибербезопасность сайта, предоставляя конфиденциальную информацию любому желающему. Например, просмотрев HTTP-заголовки сайта-конкурента, я смог узнать текущую версию веб-сервера, версию PHP,  версию программного обеспечения на сервере, и даже название шаблона сайта. Количество этих заголовков иногда зашкаливает и влияет на общую скорость загрузки сайта. Так зачем вся эта лишняя информация?

Но я не призываю удалять ВСЕ HTTP-заголовки. Нет, они нужны – в первую очередь для контроля, чтобы понимать как отвечает сервер, какую информацию он передает (передается ли cache, last modified и т.д.) и как интернет-браузер обрабатывает эти данные. Проверить HTTP Headers можно разными способами. Самый простой – открыть онлайн-сервис BERTAL.RU:

Проверка http-заголовков

Вводим URL-адрес домена и получаем HTTP-заголовки сайта. Выше на скриншоте показаны http-заголовки моего сайта. Как видим, ничего лишнего. Код ответа 200 ОК, а в заголовках только актуальная информация, нужная браузеру, чтобы корректно обработать и отобразить страницу.

Что такое HTTP заголовки

Давайте теперь посмотрим ответ другого сайта:

И еще один пример:

Как видим, “каша” из различной информации. Другие “перлы” можно просмотреть тут.

У владельцев подобных сайтов часто возникают вопросы – а почему веб-страницы не в индексе, почему такие низкие позиции? Все просто. Проигнорирована техническая оптимизация сайта, которая начинается с анализа кодов ответов сервера и оптимизации HTTP Headers. HTTP-заголовки влияют и на скорость загрузки сайта, и на качество индексирования. Если в HTTP-заголовках домена много устаревшей, не корректной информации или переадресаций, то при индексировании поисковый бот может испытать трудности и просто “развернуться”, что скажется на попадание вашего сайта в индекс. Сам процесс краулинга (crawling) очень важен и если проигнорировать его – успешного продвижения не видеть как своих ушей. Рекомендую ознакомиться с технической документацией Google.

Список HTTP-заголовков

Чтобы разобраться в этом вопросе, я специально открыл сайт Habr и собрал всю полезную информацию по HTTP-заголовкам:

Заголовок Значение Статус
date Текущие дата и время Требуется по протоколу
content-type Язык разметки, тип контента Обычно требуется браузером
server Сигнатура веб-сервера Необязателен
content-length Размер контента в байтах Полезен
last-modified Последнее изменение страницы Полезен
cache-control Управляет кешированием сайта. Указывает правила кеширования. Эффективность проверить можно тут. Полезен
content-encoding Кодировка страницы Требуется для сжатого контента
expires Дата предполагаемого срока истечения актуальности контента. Если в ответе с сервера установлен заголовок Cache-Control с директивами “max-age” или “s-maxage” , заголовок Expires игнорируется. Необязателен
x-powered-by Версия PHP сайта Необязателен
pragma Является заголовком HTTP/1.0 и отвечает за кеширование. Тем не менее, не может служить надежной заменой заголовку “Cache-Control: no-cache”, хотя и ведет себя аналогичным образом когда поле заголовка Cache-Control опущено в запросе. На некоторых CMS включен по-умолчанию и взаимодействует с Cache Control. Впринципе, выполняет какую-то работу. Полезен для HTTP 1.0
x-frame-options Защита от кликджекинга Полезен
access-control-allow-origin Проверка, может ли ресурс быть доступен для контента на текущем домене. Полезен
x-content-type-options Блокировка перехвата содержимого MIME Полезен
link Указывает на логически связный с сущностью ресурс Полезен
age Количество секунд с момента последней модификации ресурса Полезен
x-cache Непонятный заголовок, который добавляют CDN-сервисы Необязателен
x-xss-protection Защита от XSS-атак Полезен
strict-transport-security HSTS заголовок, который уведомляет ботам, что доступ к сайту должен быть только по https. Форсирует безопасность сайта. Полезен
via Общее поле HTTP заголовкаVia служит для отображения списка версий протокола HTTP, названий и версий прокси-серверов, через которые прошло сообщение. Необязателен
p3p Нужен для IE8 чтобы принимать cookies третьих лиц. Устаревший. Необязателен
expect-ct Нужный для декларирования клиенту, что используется механизм Certificate Transparency – то есть сервер получил сертификат через публично журналируемый CA, и запись о выдаче данного сертификата есть и доступна. Полезен
content-language Язык контента Спорно
x-aspnet-version Версия сервера ASP.NET Необязателен
access-control-allow-credentials Проверка безопасности. Нужен для работы некоторых jquery-плагинов. Полезен
x-robots-tag Заголовок X-Robots-Tag используется как элемент HTTP-ответа для определенного URL. В заголовках X-Robots-Tag поддерживаются те же директивы, что и в метатегах robots. Не имеет значения для браузеров, используется поисковыми ботами Google
x-ua-compatible Призывает Internet Explorer работать в определённом режиме документа. Остальные браузеры должны игнорировать данную прагма директиву. Необязателен
access-control-allow-methods Контроль безопасности Полезен
access-control-allow-headers Контроль безопасности Полезен

Жирным обозначены заголовки, которые можно без риска удалить из ответа сервера.

Как убрать HTTP-заголовки?

Чтобы ничего не нарушить, рекомендую провести только базовую оптимизацию. Например, убрать из HTTP-заголовков:  

  • HTTP-заголовок с названием и версией веб-сервера (сигнатура сервера);
  • HTTP-заголовок с названием и версией PHP;
  • HTTP-заголовок с информацией P3P (устаревший заголовок, создан для Internet Explorer, больше не поддерживается).

Убираем http-заголовок Server

Если у вас веб-сервер стандартно на Apache, нужно найти системный файл httpd.conf и добавить в него или изменить 2 строки:

ServerTokens Prod
ServerSignature Off

Если веб-сервер NGINX, то вносим эти 2 директивы в файл nginx.conf.

Убираем версию Php

Есть 2 варианта. Первый – в .htaccess добавить:
<IfModule mod_headers.c>
Header unset X-Powered-By
Header unset Server
</IfModule>
Если не сработало, пойдет второй вариант. Предварительно включите в настройках PHP вашего домена опцию – поддержка cgi-bin. Далее находим папку cgi-bin или php-bin. В ней открываем файл php.ini и изменяем параметр:
expose_php на Off

Убираем устаревший P3P

HTTP-заголовки на самом деле можно удалить и посредством PHP с помощью функции header_remove. Добавляем в самый верх шаблона сайта (header.php или index.php) следующий код:

<?php
header_remove("P3P");
?>

Проверяем http-заголовки

Проверить заголовки можем на bertal.ru, а сигнатуру сервера отдельно в бесплатном (разовом) проверщике SEOsitecheckup:
Если нежелательные заголовки остались – тогда внимательно проверьте внесенные изменения, перезагрузите веб-сервер или напишите техподдержке на хостинге, они сделают это за вас (если такая опция имеется).

Выводы

Вот, в принципе, и все, что я хотел сказать.
Проверяйте HTTP-заголовки. Разбирайте свои сайты по деталям, не спешите. Узнайте, что каждый из HTTP-заголовков означает – будет полезно и вам, и вашему сайту).
Оптимизированные HTTP-заголовки  – признак качественной технической оптимизации сайта, помогут частично улучшить его эффективность, безопасность и производительность.

Оценка:
( 1 оценка, среднее 5 из 5 )
Подписка на KRASHENININ.TECH

Получайте регулярные обновления на почту!


Виталий Крашенинин/ автор статьи
Основатель блога, публицист, IT-специалист. Предоставляю услуги по администрированию, техническому обслуживанию, поисковой оптимизации и продвижению веб-сайтов.
Не забудьте поделиться материалом в соцсетях:
KRASHENININ.TECH - блог о веб-технологиях, и не только
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотреть все комментарии
0
Есть мысли? Прокомментируй!x
()
x
Читайте ранее:
CSS трюки оформления шрифта
Трюки CSS: стили теней для текста

Сегодня немного поэкспериментируем с CSS-стилями. Я подготовил для вас несколько примеров СSS-стилей для текста. Будет интересно. Эти стили можно применять...

Закрыть