Установка модуля last modified в apache. If-Modified-Since и кеширование
В области поисковой оптимизации сайтов (SEO) гуляет вообще очень много разных мифов. Какие-то из них имеют под собой основу, какие вообще взялись не пойми откуда. В этой заметке рассмотрим один из них — использование заголовка ответа last-Modified.
Некоторое время назад к нам попал некий документ, озаглавленный «Рекомендации Ingate для веб студий по продвигаемым сайтам». И одна из «рекомендаций» была следующей:
После редизайна или на новом разрабатываемом сайте должна быть прописана дата последней модификации страниц сайта (Last Modified)
Для добавления на сайт на PHP информации о дате последней модификации страниц необходимо в самое начало исходного кода каждой страницы вставить скрипт
header ("Last-Modified: " . date("D, d M Y H:i:s", time()) . " GMT");
?>
Именно эта дикая ахинея, эта несусветная чушь и откровенно бредовый код и сподвигли меня написать эту заметку. Здесь я постараюсь объяснить, что такое Last-Modified, зачем он нужен и как его используют браузеры и поисковые машины.
Что такое Last-Modified
Веб-сервер при передаче информации клиенту (браузеры или поисковому роботу) сообщает довольно много дополнительных данных. Их можно посмотреть в консоли браузера, например:
настройте сервер на выдачу корректных заголовков ответов (например, если страница не существует, выдавать ошибку 404, а если поступил запрос If-Modified-Since, то выдавать код 304, если страница с указанной в запросе даты не изменялась).
Также можно увидеть, что если сервер никак не реагирует на условный запрос GET, то он ничем не отличается от обычного запроса. То есть, заголовок Last-Modified с текущим временем, к тому же и неправильно сформированным (привет Интегйту!) вообще не нужен!
Так нужен ли Last-Modified или нет?
Вообще нужен. Но важно понимать, что не сам заголовок играет какую-либо роль, а весь сценарий условных запросов, который должен быть реализован сайтом до конца. Именно в этом случае мы получим высокую скорость индексации сайта.
Но зачастую реализовать это в готовой CMS бывает весьма затруднительно. Возможно для этого потребуется довольно значительные изменения кода самой CMS.
Хотя для ряда CMS это можно реализовать включением кэширования страниц. Если CMS кэширует страницы, создавая и отдавая фактически статичные файлы, то сам веб-сервер будет правильно отвечать на условные запросы. Например, в WordPress это можно реализовать с помощью плагина WP Super Cache :
Проверим его в работе. Я включил этот плагин, открыл браузер в анонимном режиме и сделал два запроса одной страницы. Хорошо видно, что второй ответ правильный — 304 Not Modified:
Вместо заключения
Таким образом, мы разобрались с заголовком Last-Modified. Во-первых, он должен передавать информацию о дате и времени реального изменения документа. Во-вторых, крайне важна реакция сервера на условный запрос с заголовком If-Modified-Since.
Ну и поменьше слушайте сеошников, которые не знают элементарных основ работы интернета.
Зачем настраивать заголовок Last-Modified. Давайте попробуем максимально быстро и просто разобраться с настройкой заголовка Last-Modified.
Для начала скажу, что это нужно в первую очередь для снижения нагрузки на сервер и ускорения индексации страниц. Именно поэтому необходимо произвести настройку заголовка Last-Modified, особенно для крупных ресурсов с большим количеством страниц.
Цель этого заголовка — сообщить клиенту (браузеру или поисковику) информацию о последних изменениях конкретной страницы. Клиент передает серверу заголовок If-Modified-Since. Если изменений на странице не обнаружено, то от сервера возвращается заголовок «304 Not Modified». При этом страница не загружается.
Если же изменения вносились, то это будет учтено, и сервер вернет заголовок «200 OK» (страница загрузится с обновленным содержимым).
Корректная настройка Last-Modified дает следующие преимущества:
Почему же роботы быстрее индексируют сайты с настроенным Last-Modified?
Ответ прост: если на сайте было изменено всего 20 страниц, то роботу не нужно индексировать все 500 в поисках нового контента, поскольку Last-Modified укажет страницы с изменениями.
Last-Modified особенно важен для ресурсов с большим количеством страниц, ведь на обход каждого сайта роботу отводится ограниченное количество времени, и он может не успеть дойти до нужных страниц.
Как настроить Last-Modified
Для начала необходимо проверить, настроен ли у вас этот заголовок. Для этого можно использовать сервисы varvy.com , last-modified.com или tools.seo-auditor.com.ru . Если проверка показала отсутствие заголовка, то следует приступить к его настройке.
Если у вас статический сайт, то для каждой страницы необходимо прописать код, который вы видите на экране:
После каждого изменения содержимого вручную изменяем дату в коде. И что, каждый раз так, спросите вы меня? Да, если сайт статический.
Если сайт динамический, то используем настройку в PHP. Часто встречается вот такой код:
header(«Last-Modified: » . date(‘r’,strtotime($post->post_modified)))
Его необходимо добавить в header.php. Но он будет работать только для записей и страниц и не будет срабатывать на главной. Также он недействителен для таксономий, архивов и учета новых комментариев.
$LastModified_unix = 1294844676;
$Last Modified = 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’);
header(‘Last-Modified: ‘ . $LastModified);
Также можно настроить заголовок, прописав две строки в файле.htaccess:
RewriteRule .* —
RewriteRule .* —
Но в этом случае необходимо проверить, не возникнет ли проблем со стороны хостинга.
Чтобы не прописывать коды, можно использовать готовые решения для настройки Last-Modified. Например, для CMS WordPress есть плагины Clearfy и Last Modified Timestamp. Настройку можно выполнить с помощью плагина WP Super Cache. Для этого в расширенных настройках активируйте пункт «Ошибка 304» (поддержка ответа 304 отключена по умолчанию, так как на некоторых хостингах могут возникать проблемы). Для других CMS также существуют свои плагины, ну или в крайнем случае, можно заказать плагин у программиста.
Следует понимать, что настройка Last-Modified не всегда полезна (например, когда на каждой странице установлен «сквозной» блок информации с регулярно меняющимся контентом одинакового содержания). В этом случае поисковики могут перестать воспринимать информацию как новую и станут реже посещать ваш сайт.
В остальных случаях, настроив Last-Modified, вы получаете:
- экономию трафика;
- ускоряете работу сайта;
- выполняете рекомендации поисковиков Google и Яндекс, что значительно ускоряет индексацию и повышает видимость страниц в поиске. Особенно хорошо это заметно на ресурсах с большим количеством страниц.
Смысл if modified since заключается в том, что поисковик (в интернетах пишут что и браузеры сегодня такое умеют, не проверял) заходя на страницу считывают заголовок last modified (время последнего изменения документа) . При следующем обращении поисковик посылает запомненную дату, задача сайта проверить не обновилась ли страница с предыдущего раза и в случае совпадения дат ответить заголовком 304 Not Modified и остановить выполнения скрипта. Данные заголовки увеличат скорость переиндексации сайта.
Как добавить заголовок if modified since
Если у вашего сайта ещё нет заголовка if modified since
, внесите правку в файл:
/inc/_func.php
найдите (~220+ строка)
} if(!getvars()){ ... } Добавьте ниже чтоб получилось так: } if(!getvars()){ ... }else{ $a=array(); if(isset($a[$g->item(0).$g->item(1).$g->item(2)])) $t=time();//TIME;//в более поздних else{ $t=filemtime($g->file); if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])>=$t){ header("HTTP/1.1 304 Not Modified"); die(); } } header("Last-Modified: ".gmdate("D, d M Y H:i:s \G\M\T",$t)); }
Если на сайте есть динамические разделы: отзывы, каталог товаров итп. добавьте их названия в массив $a, взять можно из адресной строки браузера или в разделе панели управления править меню --> ссылка.
$a=array("reviews"=>1); $a=array("reviews"=>1,"catalog"=>1);
Как проверить 304 not modified и if modified since
1) Проверить заголовки 304 not modified и if modified since можно при помощи сервиса проверка ответа сервера в яндекс вебмастере https://webmaster.yandex.ru/server-response.xml . Поставьте галочку "добавить заголовок If-Modified-Since" и поставьте там дату час тому назад должен выдать Код статуса https: "304 Not Modified". Далее установите дату на сутки назад - получим статус Код статуса https: "200 OK". Ура всё работает.
Само собой страница тестирования должна быть изменена перед проверкой.
2) Способ попроще https://last-modified.com/ru/if-modified-since.html . Вставляем адрес и вуаля, там всё по русски напишет чего найдено чего не найдено.
304 not modified не найден
Заголовок http if modified since
будет найден в любом случае, а вот статус второго может оказаться таким: 304 not modified не найден
, по 2-му способу проверки, по 1-му в яндексе он просто 200-й покажет.
Скорее всего проблема в том что через проксирующий сервер nginx 304 last modified не передаются заголовки или Apache не передаёт.
Я не наблюдаю такой проблемы сейчас, с Apache 2.2.27, но на всякий случай для связки Apache + php решается это двумя способами, если php установлен не как cgi:
Htaccess в самом низу приводим к виду: 1) Только в php RewriteRule (.*) index.php?q=$1 2) На все фалы RewriteRule (.*) index.php?q=$1 RewriteRule .* - #RewriteRule .* -
304 not modified nginx
Здесь немного сложнее, чтобы передавался заголовок back-end-у необходимо ему от этом сообщить. Если nginx работает как проксирующий сервер я бы сперва попробовал переключить на HTTP 1.1 - proxy_http_version 1.1; Nginx с Apache по умолчанию взаимодействуют по 1.0. Но к примеру на одном из моих серверов я так и не смог этого добиться за разумное время, в качестве проксирующего для отдачи статики стоял модуль к сипанели Nginx Admin (v4.8 Stable). Решил просто удалением модуля с front-end-ом.
Location / { chunked_transfer_encoding off; proxy_http_version 1.1; proxy_pass https://localhost:9001; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host:9001; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade websocket; #? }
Если же речь идёт об отдельном сервере под сайт, то конфигурации могут быть разными:
Location ~ \.php$ { if_modified_since off; #На сайте nginx кто-то там писал что # для скриптов это и так отключено, данный флаг отключает внутреннюю проверку, пробуйте.. fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /путь/web$fastcgi_script_name; fastcgi_pass_header Last-Modified; include fastcgi_params; }
В данный момент мне негде поэкспериментировать, так что отправляю дальше в гугл ищите:
Proxy_set_header If-Modified-Since $http_if_modified_since; proxy_pass_header If-Modified-Since; fastcgi_param If-Modified-Since; underscores_in_headers on; ignore_invalid_headers off;
Если у кого есть работающие конфигурации пишите на почту выложу.
Заголовки Last-Modified и If-Modified-Since для WordPress
Мало кто обращает внимание на HTTP заголовки Last-Modified и If-Modified-Since при оптимизации своего сайта, а зря! Важно, чтобы страница, контент которой не менялся с последнего визита поискового робота отдавала 304 код, который собственно и говорит о том, что данная конкретная страница ничем не дополнялась – Вы не редактировали и не дополняли текст, к этой записи не добавлялись комментарии и т.п.
Если данный http-заголовок отсутствует, то в Яндексе, при сортировке результатов по дате, сайт не будет виден большинству юзеров.
Именно поэтому важно, чтобы Вы не только его правильно настроили, но и каждый раз, когда редактируете запись, обновляли дату на текущую. Это нужно будет делать вручную.
С комментариями попроще: когда посетитель добавляет комментарий, то в переменную $last_modified_time время добавления комментария заносится автоматически - это и будет датой последнего изменения страницы.
Зачем нужны заголовки Last-Modified и If-Modified-Since?
1. Когда сервер отдаёт такой код, то выполнение всех PHP сценариев на странице даже не запускается. Страница загружается из кэша поиска, а это, как Вы понимаете, весьма существенно снижает нагрузку на сервер к вящей радости Вашего хостера и ускоряет загрузку страницы у посетителя, что тоже не может не радовать.
Как это происходит?
Сканируя интернет, пауки Google и Яндекса сохраняют в своей базе копию каждого сайта. Эта копия служит неким образцом для сравнения: все ли по-прежнему или произошли изменения. И если не настроены заголовки Last-Modified и If-Modified-Since или настроены неправильно, новые страницы сайта проходят индексацию, а главная в кэше поисковиков долго не обновляется, как не обновляется и лента комментариев.
Но для часто обновляемых страниц (новостных лент, обновляемых по многу раз в сутки, активно комментируемых блогов и т.п.) у него есть один недостаток: информация в кэше слишком быстро устаревает и человек, даже перезагружая страницу, не видит свежих новостей, не видит новых комментариев. Но это еще полбеды. Беда в том, что робот этого тоже не видит, если только не включен правильный заголовок Last-Modified.
header("Last-Modified: ".gmdate("D, d M Y H:i:s ")."GMT");
Если Ваш сайт обновляется часто (например, Ваши записи часто комментируют) можно отключить кеширование следующим набором заголовков:
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");
Это означает, что действительность сохранённой копии должна перепроверяться при каждом запросе.
Как работает кэширование в браузерах?
Если оно не запрещено вызовом функции no_cache , то в Firefox и в IE страница сохраняется в кэше, при всех последующих запросах выдается именно она.
Чтобы обновить страницу и получить ее свежую версию, нужно нажать комбинацию клавиш Ctrl + F5 , обычная кнопка «Обновить» (F5) не срабатывает. И надо сказать, документы в кэше IE могут храниться очень-очень долго.
В Опере страница кэш очищается по нажатию кнопки «Обновить» или клавиши F5. Сочетание CRTL+F5 в Опере - перезагрузка всех открытых вкладок, Как Вы понимаете, если Вы их много наоткрывали – в процессе ожидания у Вас может отрасти борода.
Если запретить кэширование страницы функцией no_cache , то Опера и Firefox при обращении к такой странице используют механизм с заголовком If-Modified-Since . Таким образом, кэширование происходит, но браузер спрашивает у сервера, изменилась ли страница на самом деле, или нет – это правильная постановка вопроса.
Следовательно, нужно подключить обработку и этого параметра. Я не буду расписывать, что и какая функция означает, просто приведу код, который корректно отдает заголовки и не вызывает конфликтов на большинстве хостингов, с которыми мне приходилось работать. Эта конструкция работает на sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");
header("Cache-Control: no-cache, must-revalidate");
$mt = filemtime($file_name);
$mt_str = gmdate("D, d M Y H:i:s ")."GMT";
if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $mt)
{header("HTTP/1.1 304 Not Modified");
die;
}
header("Last-Modified: ".$mt_str);
echo $text;
header("Vary: Accept-Encoding");
header("Accept-Encoding:gzip,deflate,sdch");
?>
Таким образом, все, что Вам нужно сделать, это скопировать данный код и добавить его в файл header.php Вашей темы оформления НАД . Т.е. этот код – находится в самом верху файла ДО всего остального кода
Внимание! Прежде чем что-то добавлять – сохраните этот файл у себя на компьютере, чтобы можно было восстановить первоначальный вариант, если Ваш не позволяет такую конфигурацию заголовков.
Проверяем результат на сервисе проверки заголовков Last-Modified и If-Modified-Since http://last-modified.com/ru/if-modified-since.html
- Если результат положительный – утираем пот со лба и идем пить чай.
- Если результат отрицательный, ту же конструкцию можно добавить в файл index.php в корне Вашего WordPress (с этим я столкнулась на хостинге timeweb.ru). Точно так же, выше всего остального в нем. Только не забудьте про это, когда будете обновлять – индексный файл перезапишется в стандартном его виде.
Вуаля! Правильно настроив заголовки Last-Modified и If-Modified-Since, мы получили кучу бонусов:
- Увеличили скорость загрузки страниц, что важно для робота Google и приятно для людей.
- Снизили нагрузку на сервер, чем порадовали хостера.
- В поисковой выдаче Яндекса будет отображаться дата последнего обновления страницы, что в отдельных случаях очень актуально для людей, а потому косвенно это положительно отразится на поведенческих факторах.
- Страницы нашего сайта будут участвовать в сортировке поисковых систем по дате – да-да, этим пользуются продвинутые пользователи.
- И, как следствие всего вышесказанного, весьма ускорится индексирование нашего сайта поисковиками.
В этой статье мы будем настраивать важнейший заголовок ответа сервера - Last-Modified, благодаря чему нагрузка на сервер снизится на 20-30%, а индексация вашего сайта ускорится в разы. Также мы научим ваш сервер выдавать 304 ошибку, в случае, когда поисковый робот обращается к вашему сайту с заголовком If-Modified-Since.
Зачем нужен заголовок Last-Modified
Прежде всего хотелось бы обсудить значимость заголовка Last-Modified. Но, как показывает практика, наряду со своей чрезвычайной значимостью и необходимостью, этот заголовок почему-то повсеместно забывается и совершенно несправедливо недооценивается. Если вы почитаете рекомендации поисковых систем, в которых четко и открыто говорится и важности передачи в заголовках Last-Modified (даты последнего изменения той или иной страницы), то у вас не останется никаких сомнений, что это обязательно нужно сделать и чем быстрее, тем лучше. Особенно это касается ресурсов с большой и средней посещаемостью, с регулярно пополняемым контентом. Статичные сайты с 10 страницами могут обойтись и без этого, хотя данная функция никак отрицательно не скажется и не помешает.
Заголовок Last-Modified содержит в себе дату и время по Гринвичу, когда страница последний раз изменялась. У каждой страницы своя дата. Практически любые из существующих CMS сейчас сохраняют дату редактирования страниц или записей, также дата обновления страницы изменяется, когда кто-либо оставил индексируемый комментарий (все зависит от ваших конкретных настроек). Только вот почему-то далеко не все современные системы администрирования предусматривают отправку той самой даты изменения страницы в виде заголовка и уж, тем более, никак не реагируют на получаемый заголовок If-Modified-Since, но об этом чуть позже.
Дело в том, что поисковый робот может довольно часто заходить на регулярно обновляемый сайт и сканировать его страницы в порядке приоритета, иногда даже приходится выставлять параметр Crawl-delay в robots.txt, чтобы немного умерить пыл излишне активных роботов, перегружающих несчастный сервер, а иногда, наоборот, люди месяцами напряженно работают, не видя никаких результатов, лишь бы только увеличить частоту посещения сайта поисковым роботом . Если такой сайт не сообщает поисковому сканеру о том, когда какие страницы последний раз изменялись и изменялись ли они вообще со времени прошлого визита, сканер в свою очередь проходится по страницам снова и снова, так как будто они изменились, хотя это может быть и не так. А так как количество загружаемых страниц за один заход поискового бота ограничено, он может просто не добраться до ваших новых статей и уйти восвояси, израсходовав лимит на старые страницы, которые и вовсе не обновлялись. Несомненно, рано или поздно сканер все-таки доберется и до новых страниц, но это будет гораздо позже. Это нужно запомнить как аксиому, а кто не верит, читает на сайте Яндекса о last-modified .
То же самое касается и обычных посетителей сайта, ведь если ваша старая статья находится в локальном кеше, а сервер не отправляет заголовок 304 Not Modified, то она будет грузиться снова и снова, каждый раз с нуля, тем самым нагрузка на сервер будет выше. Если же со времени последнего посещения какой-то страницы и добавления ее в кеш ничего не изменилось, нужно, чтобы ваш сервер отправлял в ответе заголовок 304 Not Modified и прекращал дальнейшую генерацию страницы. Зачем каждый раз подгружать старые страницы, если на них ничего не изменилось? Их содержание можно взять из кеша. Элементарно и эффективно!
Ответ сервера на заголовок If-Modified-Since
Мы плавно подошли с вами ко второму, не менее важному моменту - реакции вашего сервера на посылаемый поисковыми ботами заголовок If-Modified-Since. Делают они это для того, чтобы проверить, изменялась ли ваша страница со времени последнего посещения и собственно передают в заголовке это самое время. Ваш сервер в таком случае должен сопоставить время последнего обновления страницы, к которой обратился бот и время ее последнего посещения, которое он вам сообщает. Если с тех пор ничего нового на странице не появилось, сервер должен ответить заголовком 304 Not Modified и остановить передачу данных, выйдя из исполняющего скрипта (в случае с PHP - это функция exit ). Получив 304 ответ, поисковый робот поймет, что делать тут пока больше нечего и пойдет на следующую страницу, тем самым экономя уйму времени.
Благодаря этому индексация вашего сайта значительно ускоряется, а также снижается ненужная нагрузка на сервер.
Хочется добавить, что в одной из наших статей мы разбирали еще один интересный способ ускорения индексации сайта. Там речь шла именно о сайтах на движке WordPress и для этого использовались специальные пинг сервера , адреса которых мы привели и указали что с ними нужно делать.
PHP-функция
Итак, давайте перейдем непосредственно к делу и рассмотрим функцию, разработанную нашими специалистами и успешно оттестированную на нескольких сайтах:
Function lastModified($gmdate) { $IfModifiedSince = false; if (isset($_ENV["HTTP_IF_MODIFIED_SINCE"]) or isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) { $IfModifiedSince = strtotime(substr(($_ENV["HTTP_IF_MODIFIED_SINCE"] ? $_ENV["HTTP_IF_MODIFIED_SINCE"] : $_SERVER["HTTP_IF_MODIFIED_SINCE"]), 5)); } if ($IfModifiedSince && $IfModifiedSince >= strtotime($gmdate)) { header($_SERVER["SERVER_PROTOCOL"]." 304 Not Modified"); exit; } header("Last-Modified: ".$gmdate); }
Хочется подчеркнуть, что функция в качестве единственного аргумента принимает дату и время по Гринвичу - gmdate() , а не date() , просьба не путать, пожалуйста. Принимаемый функцией аргумент - это и есть дата и время последнего изменения страницы. То, где вы будете ее брать - зависит от системы администрирования, вот, например, в WordPress ее можно получить так:
$WordpressPageLastModified = get_the_modified_date("r");
А что, если нет никакой системы администрирования и речь идет о статичной странице сайта, в которую изменения вносятся вручную, прямо в коде. На этот случай мы тоже придумали решение, как отправлять в заголовке дату ее последнего изменения:
$StaticPageLastModified = gmdate("D, d M Y H:i:s \G\M\T", filemtime($_SERVER["DOCUMENT_ROOT"]."/index.php"));
В данном случае мы используем функцию filemtime() , которая возвращает время последнего редактирования файла в формате Unix time.
Кстати, не рекомендуем придумывать эту дату из головы, даже если ваша страница оставалась статичной все это время. Данная уловка ни к чему хорошему не приведет, т.к. поисковики все равно проверят, изменилась ли страница на самом деле и могут наказать за введение их в заблуждение.
Проверка ответа сервера
В интернете есть несколько сервисов проверки ответа сервера, но, как оказалось, не всех из них делают это корректно и не все позволяют отследить поведение вашего сервера в ответ на передаваемый заголовок If-Modified-Since, а нам то нужно убедиться, что сервер отправляет заголовок 304 Not Modified, если страница не обновлялась с момента последнего посещения.
Проверить ответ сервера можно и на нашем сайте, но для наиболее полной картины мы все-таки рекомендуем воспользоваться официальным сервисом Яндекса . Там вы сможете указать все необходимые заголовки, а также выбрать фиктивное время последнего посещения. Так же Яндекс позволит вам выбрать тип поискового бота, но для использования этого инструмента необходимо добавить и подтвердить права на управление сайтом в Яндекс.Вебмастере, что вообще, честно говоря, нужно всегда делать первым делом.