Место для вас

Создание карты сайта Sitemap.XML на PHP

Наличие "карт сайта" или иначе говоря sitemap.xml — это обязательное требование к сайту, если вы хотите чтоб люди узнали о нем.
Благодаря карте сайта роботы поисковиков видят все страницы сайта, тем самым происходит его индексирование гораздо быстрее, так как sitemap используется, как дополнительная подсказка для поисковых систем.

Анализируя sitemap.xml поисковики получают информацию об имеющихся страницах сайта, время их последнего обновления/создания, частоту обновления и т.д.

Sitemap является общепринятым стандартом и по этому нет необходимости подстраиваться под каждый поисковик.

Покажу пример создания карты сайта на php.


<?php
// подключение к БД
$connect = mysql_connect("host","usr","pwd") or die('No connection');
mysql_query('SET NAMES utf8');
mysql_select_db("db_name",$connect) or die('No connection!');

// указываем заголовок XML документа, говоря ему о том, что это SITEMAP.XML
$s_map = '<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">'."\r\n";

// указываем главную страницу сайта
$s_map .= '
<url>
<loc>http://www.site.com/</loc>
<lastmod>'.date("Y-m-d\TH:i:s+02:00").'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>'."\r\n";

// тут нужно получить ссылку на страницу
$query = "SELECT * FROM tabe";
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<$num_result;$i++)
{
$row = mysql_fetch_array($result);
$s_map .= '<url>'."\r\n";
$s_map .= '<loc>http://www.site.com/'.$row["url"].'</loc>'."\r\n";
$s_map .= '<changefreq>weekly</changefreq>'."\r\n";
$s_map .= '<priority>0.50</priority>'."\r\n";
$s_map .= '</url>'."\r\n";
}
$s_map .= '</urlset>';

// запись в файл
$file_name = 'sitemap.xml';
$one_file = fopen($file_name,"w");
fwrite($one_file,$s_map);
fclose($one_file);
?>

Небольшие пояснения:


<loc>ссылка на страницу сайта</loc>
<changefreq>частота сканирования. можно указывать: weekly, hourly, monthly</changefreq>
<priority>тут уазывается приоретет страницы. должен быть от 0.1 и до 1</priority>

Если у вас большой сайт (интернет магазин/новостной блог), то лучше всего создавать составной sitemap. Либо делить все ссылки по группам, либо по количеству (к примеру: по 200 ссылок в каждый файл), либо по категориям (то есть для каждой категории создавать свою карту). Это ускорит обход всех ссылок, так как поисковики не любят большего количества ссылок в файле.

Я для каждой кагории товара или новостей создаю отдельную карту: sitemap_category1.xml, sitemap_category2.xml и тд.
потом создаю отдельную карту, где указываю сылку на главную страницу сайта, и сылки на категории: sitemap_main.xml
а затем создаю единый sitemap.xml, в котором указываю ссылки на все карты сайта.


<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://www.site.com/sitemap/sitemap_1.xml</loc>
<lastmod>2012-06-15T09:00:22+02:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.site.com/sitemap/sitemap_1.xml</loc>
<lastmod>2012-06-15T09:00:22+02:00</lastmod>
</sitemap>
</sitemapindex>

Место для вас

Коментарии

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

  1. Руслан - 18 декабря, 2016 в 17:45:00

    скрипт не рабочий,или код не полный.постоянно ошибка вылазиет на линии 27,и файл генерирует только на главную. Вот что пишет: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in greentub.ru/sitemap/generator.php on line 27

    • adminer - 27 апреля, 2017 в 08:51:02

      Руслан, а вы уверенны в правильности запросов?

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

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

Что за сайт

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

Будь в курсе

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

Вверх