Скрипт карты сайта: файл sitemap.xml
Я уже писал здесь для чего нужен этот файл.
Для создания этого файла необходимо иметь список страниц, которые вы собираетесь отправить в Google для индексирования.
Список этот представляет собой простой перечень линков на каждую страницу, например:
- http://mysite.com/page1.html
- http://mysite.com/page2.html
- http://mysite.com/page3.html
- http://mysite.com/page4.html
- ...........................................
- http://mysite.com/page1000.html
Удобно хранить такой список в специальной таблице базы данных, в которой нужно создать 4 поля:
| loc |
lastmod |
changefreq |
priority |
| http://mysite.com/page1.html |
2008-09-20 |
always |
0.5 |
Подробнее о значениях lastmod, changefreq и priority читайте в этой статье.
Все, что нам нужно сделать - это вытащить этот список из таблицы и записать его в текстовый (xml) файл.
Скрипт, который создает файл sitemap.xml, может выглядеть примерно так:
<?php
// Извлекаем данные из таблицы sitemap
$sql = mysql_query("select * from sitemap");
while($record = mysql_fetch_array($sql))
{
$data[$i]='<loc>http://'.$record['loc'].'</loc>
<lastmod>'.$record['lastmode'].'</lastmod>
<changefreq>'.$record['changefreq'].'</changefreq>
<priority>'.$recor d['priority'].'</priority>';
$i++;
}
// собираем воедино все записи
for($j=1; $j<$i+1; $j++)
if($data[$j])
$string = $string.'<url>'.$data[$j].'</url>';
// добавляем "шапку" и окончание xml-файла
$xml='<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
'.$string.'</urlset>';
// записываем все это в файл sitemap.xml
$fp=fopen('sitemap.xml','a'); //открытие файла
flock($fp,LOCK_EX); //блокировка файла
ftruncate ($fp,0); //удаляем старое содержимое файла
fwrite($fp,$xml); //записываем в него новое содержимое
fflush($fp); //очищение файлового буфера и запись в файл
flock($fp,LOCK_UN); //снятие блокировки
fclose($fp); //закрытие файла
?>
Согласно инструкции Google, файл sitemap.xml должен находиться в корневой директории сайта. Сам же скрипт вы можете поместить куда угодно, не забыв изменить в нем путь к файлу $fp = fopen('sitemap.xml','a'); .
Если этот скрипт связать с админкой (что я и сделал в CMS "Столица"), то его содержимое будет обновляться при каждом создании или редактировании страниц. И это очень удобно. Потому что рописав его единожды в Google, вы можете жить спокойно - поисковик будет регулярно информирован обо всех новых или измененных страницах вашего сайта.
|