Место для вас

Пинг sitemap.xml в Google, Yandex, Bing

Сегодня хочу поделиться небольшим скриптом, который пингует sitemap.xml популярным поисковикам, как Google, Yandex и Bing.

Если вы используете готоую cms такую, как Joomla, Wordpress и тд, то вам повезло, так как для них уже есть готовые плагины и расширения. Надо только установить их и пользоваться. Но что делать если вы используете фреимворк такой, как Yii, Codeigniter и тд? Или же свой собственный самописный движок? То в этом случае все придется делать ручками.

Но не пугайтесь. Все довольно просто.

И так. Что такое sitemap, для чего он нужен и как его вообще сварганить, я уже писал. Не хочу повторяться. Все что нам нужно, так это рабочий и валидный sitemap.xml. А так же список тех поисковиков, которым вам нужно сообщить об изменениях на вашем сайте.

Хотя поисковики и так сами это делают, если вы добавили ваш сайт в webmaster tools, но я все равно их оповещаю cron'ом разок в месяц.

На всяк случай вот этот список. Мало ли это для кого-то еще секрет.

  • https://www.google.com/webmasters/tools/home?hl=ru
  • https://webmaster.yandex.ru/
  • www.bing.com/toolbox/webmaster

// ссылка на sitemap.xml
$sitemapURL = 'http://www.yoursite.com/sitemap.xml';

// список сервисов
$pingUrl[] = 'http://ping.blogs.yandex.ru/ping?sitemap='.$sitemapURL;
$pingUrl[] = 'http://www.google.com/webmasters/sitemaps/ping?sitemap='.$sitemapURL;
$pingUrl[] = 'http://www.bing.com/webmaster/ping.aspx?siteMap='.$sitemapURL;

// пингуем катру сайта
function pingCurl($url)
{
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_exec($ch);
	$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);

	return $httpCode;
}

// если ошибка, то посылаем сообщение
function sendErrorEmail($pingedURL, $returnedCode)
{
    if($returnedCode != "200")
    {
    	$headers = "From: noreply@yoursite.com";
    	$to = "support@yoursite.com";
	    $subject = "Неудачный пинг sitemap!!!";
	    $message = "Код: ".$returnedCode.".
Поисковик: ".$pingedURL;

        mail($to, $subject, $message, $headers);
    }
}

// циклично пробегаемся по сервисам и сообщаем им об изменениях
foreach ($pingUrl as $value)
{
	$returnCode = pingCurl($value);
	sendErrorEmail($value, $returnCode);
	sleep(1);
}

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


Место для вас

Коментарии

добавить коментарий

  1. Михаил - 08 января, 2017 в 17:51:40

    Здравствуйте Александр.
    Установил Ваш скрипт но в логах сервера появляется такая ошибка:
    PHP Fatal error:  Call to undefined function sendErrorEmail() in
    и указывает на sendErrorEmail($value, $returnCode);
    В чем может быть причина?

    • adminer - 27 апреля, 2017 в 08:50:59

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

  2. Alex - 26 июля, 2017 в 19:18:32

    Вот и всё... яша закрыл пингование...(

    • админер - 26 июля, 2017 в 19:18:34

      Alex,  не понял. что вы имеете ввиду?

  3. Alex - 31 июля, 2017 в 20:43:45

    Пингование шло по ссылке https://yandex.ru/blogs/pings или как у вас написано в скрипте.  Теперь эта ссылка отображается, как пустой поисковый запрос.

    Закрыл яша пингование.

    • админер - 31 июля, 2017 в 20:50:15

      Alex , спасибо. проверю, как руки дойдут. но мне никаких писем не приходило.

Добавить коментарий

кликните на картинку,
чтоб обновить код

Что за сайт

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

Будь в курсе

Интересненько

Вверх