Вопрос по Гуглу и заголовкам ответа сервера

R1
На сайте с 20.04.2017
Offline
30
1718

Коллеги, здравствуйте. Прошу вашей помощи вот в такой ситуации. Есть у меня сайт, был изначально просто визиткой, теперь я его потихоньку расширяю. Сайт на обычных страничках.

Когда он был на .html страницах, мой сервер выдавал статику с заголовком "Content-Length", когда я перешёл с .html страниц на .php страницы, заголовок "Content-Length" тут же перестал отдаваться со стороны сервера, поскольку статика перестала быть статикой, а стала динамикой - на платформе РНР.

Вот такие конкретно сейчас у меня заголовки в ответе сервера:

HTTP/1.1 200 OK

Server: nginx

Date: Sat, 28 Oct 2017 18:49:21 GMT

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

Last-Modified: Wed, 16 Aug 2017 18:41:22 GMT

Вопрос: нужно ли в дополнение к указанным выше заголовкам добавить ещё и заголовок "Content-Length"? Насколько это критично для поисковых роботов Гугла?

Если всё-же нужно будет добавить, то каким образом этом можно сделать правильно с помощью скриптов на РНР? Заранее благодарен вам, уважаемые коллеги, за ответы и мысли на данный счёт.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1
roman1981:
нужно ли в дополнение к указанным выше заголовкам добавить ещё и заголовок "Content-Length"?

Не нужно.

..........

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
R1
На сайте с 20.04.2017
Offline
30
#2

Коллеги, спасибо большое за ваши ответы.

Позвольте ещё задать один вопрос, поскольку переживаю по поводу поисковых алгоритмов Гугла и Яндекса. Как выше вы могли видеть, последней строчкой ответа сервера у меня указан заголовок "Last-Modified". Этот заголовок добавил я вручную, разместив соответствующий РНР-код в самом начале каждой страницы моего сайта. Естественно, я не сам писал этот код, поскольку (к сожалению) только начал изучать язык РНР. Этот кусок кода я позаимствовал вот из этого ресурса:

https://last-modified.com/ru/last-modified-if-modified-since-php.html

Соответственно, вот и сам РНР-код, который находится у меня в самом начале каждой .php страницы сайта:


<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
?>

Вопрос: как вы считаете, можно ли доверять указанному выше ресурсу (last-modified.com) и использовать данный РНР-код на своём сайте? Корректен ли этот код и не будет ли на него ругаться поисковик? Нет ли в нём каких-либо скрытых косяков и проблем (в частности, для поисковых роботов Гугла и Яндекса)? Прошу вас откликнуться.

К слову сказать, вот как дословно описывается работа данного скрипта на самом сайте last-modified.com

Все просто - получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть - отдаем 304 Not Modified и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified и отдаем страницу.

Ещё раз благодарен за ваше внимание к данному вопросу. Это последний вопрос, который меня сильно тревожит, ввиду нехватки моих знаний в РНР-программировании. Спасибо вам заранее!

R1
На сайте с 20.04.2017
Offline
30
#3

nyc22, коллега, в том-то и дело, что ранее у меня на сайте контент отдавался всегда, вне зависимости от того, были ли изменения со времени последнего посещения бота или не были. Иными словами, механизм If-Modified-Since у меня не работал вообще.

Теперь же, с помощью вышеуказанного кода РНР, я сделал так: если вместе с запросом от бота (или от браузера) приходит заголовок If-Modified-Since, в таком случае РНР не отдаёт контент боту вообще, а просто пишет ответ "304 Not Modified", то есть контент не изменялся. Вот такой сейчас у меня ответ от сервера в случае, если контент не менялся с такого-то периода времени:

HTTP/1.1 304 Not Modified

Server: nginx

Date: Sun, 29 Oct 2017 06:21:45 GMT

Connection: keep-alive

И всё, далее никакого контента нет, поскольку сработал механизм If-Modified-Since. Весь вопрос в том, правильны и корретный ли вышеуказанный код РНР, который собственно и отрабатывает этот момент. Не будет ли проблем в будущем с Гуглом из-за этого кода, нет ли там скрытых для неопытного глаза ошибок, или косяков. Потому-то я и задал этот вопрос уважаемым форумчанам.

samimages
На сайте с 31.05.2009
Offline
427
#4
roman1981:
Весь вопрос в том, правильны и корретный ли вышеуказанный код РНР, который собственно и отрабатывает этот момент.

Если заголовок уходит, значит правильный - там нет полумеров только да/нет.

nyc22:
Ему боту контент и скорость выдачи важны - пофигу все эти заголовки.

Это хорошо когда на сайте полторы странички, а когда 100, например, можно создавать всякие темы про медленную индексацию))) roman1981, все делает правильно, не смущайте его досужими рассуждениями ;)

Опыт как иммунитет — приобретается в муках! Аудит семантики от 15К [долго] - ЛС
R1
На сайте с 20.04.2017
Offline
30
#5

Коллеги, ещё раз спасибо вам за ответы. Теперь всё предельно понятно, заголовок "Content-Length" не нужен (т.е. можно его вообще опустить и не показывать). Также, если заголовок "Last-Modified" нормально отрабатывает, значит вышеуказанный код РНР правильный. Спасибо за ваши ответы!

Но у меня возник ещё один вопрос к уважаемой аудитории сёрча.

Как насчёт кеширования страниц сайта? Стоит ли мне добавлять серию заголовков для управления кешем браузеров и поисковых роботов? Как, например, такие классические заголовки:

"Cache-Control: max-age=1028000" (кешировать на столько-то времени), либо

"Cache-Control: no-store, no-cache, max-age=0" (полный запрет кеширования)

Какая у кого из вас практика - стоит ли дополнительно управлять кешированием (и как это влияет или может повлиять на поисковые роботы Гугла и Яндекса)? Стоит ли мне заморачиваться этим вопросом, или же не стоит? Иными словами, каким образом заголовки по управлению кешированием влияют на поисковую оптимизацию сайта?

Или же не заморачиваться этим вопросом, как в случае с заголовком "Content-Length", рассмотренным выше?...

samimages
На сайте с 31.05.2009
Offline
427
#6

roman1981, если определенных требований к кешированию нет, проще не кешировать. Закладывать вероятную возможность целесообразно только при проектировании cms, например.

nyc22:
Пофигу вся эта фигня с заголовкам

тыц

Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок If-Modified-Since.

тыдыц

Даже если сервер не выдает дату последней модификации документа (last-modified), ваш сайт будет проиндексирован. Однако в этом случае следует учитывать следующее:

в результатах поиска не будет показываться дата рядом со страницами вашего сайта;

при сортировке по дате сайт не будет виден большинству пользователей;

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

nyc22, продолжайте жить в своем выдуманном мире ;)

R1
На сайте с 20.04.2017
Offline
30
#7
samimages:
roman1981, если определенных требований к кешированию нет, проще не кешировать. Закладывать вероятную возможность целесообразно только при проектировании cms, например.

Коллега, спасибо за конструктивные и своевременные ответы на все мои вопросы, вы мне очень помогли. Ещё раз большое вам спасибо!

nyc22, так вопрос не только в том, чтобы всё быстро и хорошо работало, но и чтобы на перспективу развития сайта всё было сделано с умом.

R1
На сайте с 20.04.2017
Offline
30
#8

nyc22, а как не познавать, если сайт разрастётся до 100 страниц и более (я уже молчу о тысячах страниц!), как им управлять без знания РНР? Тут как минимум нужны PHP Includes, плюс программирование на сервере, чтобы управлять всем этим огромным монстром.

Изначально сайт у меня был просто на .html страничках, но когда он начал расти, я задумался: а как я буду с ним управляться через год-два-три, когда число страниц перевалит реальную отметку 500+ ? Именно потому я пришёл к изучению РНР и программирования в целом. Хотя сам по себе я имею гуманитарную специальность, никогда ранее не программировал, самоучка. Но жизнь заставляет учиться, познавать новое, иначе никак.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий