Для создания этого файла необходимо иметь список страниц, которые вы собираетесь отправить в 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, может выглядеть примерно так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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>'.$record['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>';
 
$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, вы можете жить спокойно – поисковик будет регулярно информирован обо всех новых или измененных страницах вашего сайта