Самостоятельное создание sitemap.xml

12
A7
На сайте с 17.02.2010
Offline
5
1336

Давно уже хочу понять что такое sitemap.xml

Я знаю, что карту создают сервисами, плагинами и скриптами, но я хочу делать карту самостоятельно, и хочу чтобы обновлялась она у меня также сама

карта будет для гугла и яндекса (у них есть различия?)

почитал в википедии примеры

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

этого достаточно для валидной карты сайта, или я вообще не так все понял?:)

Динамическмй список dofollow-блогов (http://andruha-vorobyev.ru/spisok_dofollow_blogov)
skAmZ
На сайте с 04.09.2009
Offline
122
#1

Вы все правильно поняли, насколько я знаю, разницы между картами для Яндекса и гугла нет, но точно сказать не могу.

Лично я пользуюсь своим скриптом для создания карт сайта, поставил на cron и не парюсь.


$file_name='sitemap.xml';
$host='http://site.ru/';
$uses_urls='';
set_time_limit(0);
function check_in_array($url)
{
global $uses_urls;
foreach($uses_urls as $i => $val)
if($val==$url) return true;
return false;
}

function create_site_map($in_url)
{
global $uses_urls, $host;
$url=$in_url;
$path=substr($in_url, strlen($host));
while(strlen($path)>0 and $path[strlen($path)-1]!='/')
{
$path=substr($path, 0, strlen($path)-1);
}
if(strlen($path)>0 and $path[0]=='/')
$path=substr($path, 1);
$uses_urls[]=$in_url;
$fp=@fopen($url, 'r');
if(!$fp) return;
$content='';
while(!feof($fp))
$content.=fread($fp, 1024);
fclose($fp);
preg_match_all('/href="([\/a-z0-9_\-.?:]+)"/i', $content, $tmp_mas);
foreach($tmp_mas[1] as $i => $val)
{
if(substr($val, strlen($val)-3)=='css' or substr($val, strlen($val)-3)=='ico') continue;

$inc_path=$path;
if($val[0]=='/')
{
$inc_path='';
$val=substr($val, 1);
}
if(strpos($val, 'http://')===false)
{
if(check_in_array($host.$inc_path.$val)) continue;
}
else if(check_in_array($val)) continue;
echo $host.$inc_path.$val.'<br>';

if(strpos($val, 'http://')===false)
create_site_map($host.$inc_path.$val);
else create_site_map($val);
}
}

function write_xml()
{
global $site_map, $uses_urls;
foreach($uses_urls as $i => $val)
{
fwrite($site_map, "<url>\r\n<loc>".$val."</loc>\r\n<lastmod>".date('Y-m-d')."</lastmod>\r\n<changefreq>monthly</changefreq>\r\n<priority>0.8</priority>\r\n</url>\r\n");
}
}

create_site_map($host);
$site_map=fopen($file_name, 'w');
fwrite($site_map, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">");
write_xml();
fwrite($site_map, "</urlset>");
fclose($site_map);

P.S. честно говоря особо его не тестировал, но на моих сайтах карты делает корректные =)

A7
На сайте с 17.02.2010
Offline
5
#2

спасибо большое за ответ, и еще бОльшее спасибо за пример скрипта)

думаю без проблем освою самостоятельное создание карты сайта!)

ewg777
На сайте с 04.06.2007
Offline
225
#3

skAmZ, как минимум он не валиден с точки зрения синтаксиса.

T
На сайте с 20.03.2007
Offline
67
Toy
#4

Для яндекса и гугла можно создать разные карты - создаём 2 файла sitemap_yandex.xml и sitemap_google.xml.

Дальше дело за robots.txt - в нём указываем значения директив Sitemap для яндекса и гугла соотвественно.

skAmZ
На сайте с 04.09.2009
Offline
122
#5

ewg777, готов выслушать замечания)

ewg777
На сайте с 04.06.2007
Offline
225
#6
skAmZ:
ewg777, готов выслушать замечания)

function check_in_array($url)
{
global $uses_urls;
foreach($uses_urls as $i => $val)
if($val==$url) return true;
return false;
}
О in_array слышали?

function write_xml - для чего?

И многое-многое другое.

Лучше использовать сторонние сервисы, которые реализованы качественнее.

skAmZ
На сайте с 04.09.2009
Offline
122
#7
ewg777:
skAmZ, как минимум он не валиден с точки зрения синтаксиса.

Вам знакомо значение слова "синтаксис"?)))

ewg777:
О in_array слышали?

Когда писал не слышал)

ewg777:
function write_xml - для чего?

Не уж то не понятно?))

ewg777:
Лучше использовать сторонние сервисы, которые реализованы качественнее.

Ну ну, и ставить стороние сервисы на крон?)))

ewg777
На сайте с 04.06.2007
Offline
225
#8
Вам знакомо значение слова "синтаксис"?)))

Знакомо. В этой части уг ошибка:

fwrite($site_map, "<?xml version="1.0\"
skAmZ
На сайте с 04.09.2009
Offline
122
#9

ewg777, полностью с вами согласен) Затрудняюсь ответить от куда она взялась, в моих файлах ее нет, видимо случайно удалил)

Но согласитесь не те это ошибки, чтобы отказываться от скрипта)

sirota77
На сайте с 08.09.2008
Offline
161
#10

На мой взгляд реализация это мелочи, важно соблюсти правила.

правила http://www.sitemaps.org/ru/protocol.php

валидатор http://reblinks.therssweblog.com/sitemap.validator.aspx

12

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