✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как автоматически отправлять файлы Sitemap с помощью PHP?

23

Карты сайта полезны для поисковых роботов, чтобы лучше узнать структуру вашего сайта. Они особенно полезны, если ваш сайт содержит несколько сотен страниц. Вы можете войти в Google Webmaster или Bing Master (или другие подобные инструменты веб-сайта), чтобы отправить карты сайта вручную. Если у вас много карт сайта (или много сайтов), это будет головной болью. Как насчет автоматической отправки файлов Sitemap (чтобы поисковые системы знали, что у вас есть обновления)?

карта сайта

Сначала определите массив URL-адресов карты сайта с помощью PHP :

$sitemaps = array(
  "<a class="vglnk" target="_blank" href="https://helloacm.com/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://codingforspeed.com/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>codingforspeed</span><span>.</span><span>com</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://codingforspeed.com/forum/sitemap.php" rel="nofollow"><span>https</span><span>://</span><span>codingforspeed</span><span>.</span><span>com</span><span>/</span><span>forum</span><span>/</span><span>sitemap</span><span>.</span><span>php</span></a>",
  "<a class="vglnk" target="_blank" href="https://uploadbeta.com/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>uploadbeta</span><span>.</span><span>com</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://rot47.net/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>rot47</span><span>.</span><span>net</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://justyy.com/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>justyy</span><span>.</span><span>com</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://steakovercooked.com/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>steakovercooked</span><span>.</span><span>com</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>",
  "<a class="vglnk" target="_blank" href="https://steakovercooked.com/wedding/sitemap.xml" rel="nofollow"><span>https</span><span>://</span><span>steakovercooked</span><span>.</span><span>com</span><span>/</span><span>wedding</span><span>/</span><span>sitemap</span><span>.</span><span>xml</span></a>"
);

Затем определите две функции:

// cUrl handler to ping the Sitemap submission URLs for Search Engines…
function Submit($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 SubmitSiteMap($url) {
  $returnCode = Submit($url);
  if ($returnCode != 200) {
    echo "Error $returnCode: $url <BR/>";
  } else {
    echo "Submitted $returnCode: $url <BR/>";
  }
}

Затем все, что вам нужно сделать, это повторить все карты сайта и отправить их в разные поисковые системы:

foreach ($sitemaps as $sitemapUrl) {
  $sitemapUrl = htmlentities($sitemapUrl);
 
  //Google  
  $url = "<a class="vglnk" target="_blank" href="http://www.google.com/webmasters/sitemaps/ping?sitemap=".$sitemapUrl" rel="nofollow"><span>http</span><span>://</span><span>www</span><span>.</span><span>google</span><span>.</span><span>com</span><span>/</span><span>webmasters</span><span>/</span><span>sitemaps</span><span>/</span><span>ping</span><span>?</span><span>sitemap</span><span>=".$</span><span>sitemapUrl</span></a>;
  SubmitSiteMap($url);
  
  //Bing / MSN
  $url = "<a class="vglnk" target="_blank" href="http://www.bing.com/webmaster/ping.aspx?siteMap=".$sitemapUrl" rel="nofollow"><span>http</span><span>://</span><span>www</span><span>.</span><span>bing</span><span>.</span><span>com</span><span>/</span><span>webmaster</span><span>/</span><span>ping</span><span>.</span><span>aspx</span><span>?</span><span>siteMap</span><span>=".$</span><span>sitemapUrl</span></a>;
  SubmitSiteMap($url);
  
  // Live
  $url = "<a class="vglnk" target="_blank" href="http://webmaster.live.com/ping.aspx?siteMap=".$sitemapUrl" rel="nofollow"><span>http</span><span>://</span><span>webmaster</span><span>.</span><span>live</span><span>.</span><span>com</span><span>/</span><span>ping</span><span>.</span><span>aspx</span><span>?</span><span>siteMap</span><span>=".$</span><span>sitemapUrl</span></a>;
  SubmitSiteMap($url);
  
  // moreover
  $url = "<a class="vglnk" target="_blank" href="http://api.moreover.com/ping?sitemap=".$sitemapUrl" rel="nofollow"><span>http</span><span>://</span><span>api</span><span>.</span><span>moreover</span><span>.</span><span>com</span><span>/</span><span>ping</span><span>?</span><span>sitemap</span><span>=".$</span><span>sitemapUrl</span></a>;
  SubmitSiteMap($url);
}

Добавьте следующее в начало, которое не устанавливает ограничение по времени, если вы хотите добавить это задание в crontab.

Наконец, вы можете добавить это в crontab -e

@daily php submit_sitemap.php

Кроме того, функцию Submit можно упростить, используя file_get_contents, если вы не хотите знать, прошла ли отправка успешно (без кода возврата).

function Submit($url) {
  file_get_contents($url);
}

Полный исходный код доступен на github: submit_sitemaps.php

Источник записи: helloacm.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее