Очень часто я вижу темы с названием "Как сделать Sitemap", "Куда кинуть Sitemap" и т.д. и т.п. Так вот решил найти и выложить FAQ по этому самому Sitemap, думаю многим начинающим, также возможно профессионалы найдут что-то новое для себя.
Sitemaps XML формат
Этот документ описывает XML схему для протокола Sitemap. Формат протокола Sitemap состоит из XML тегов. Все значения данных в Sitemap должны быть экранированы. Сам файл должен быть в кодировке UTF-8.
Sitemap должен:
1. Начинаться с открывающего тега <urlset> и заканчиваться закрывающим тегом </urlset> tag.
2. Устанавливать пространство имен (namspace) (стандарт протокола) в теге <urlset>.
3. Содержать элемент <url> для каждого адреса (URL), как родительский XML тег.
4. Содержать дочерний элемент <loc> для каждого родительского тега <url>.
Все другие теги являются необязательными. Поддержка дополнительных тегов может отличаться в разных поисковых системах. Для детальной информации следует обращаться к документации соответсвующей поисковой системы.
Пример XML Sitemap
В следующем примере представлен Sitemap, содержащий всего один адрес и использующий все необязательные теги.
Quote
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Определения XML тегов
Доступные XML описаны ниже.
<urlset> - обязательный
Включает файл и ссылку на текущую версию протокола.
<url> - обязательный
Родительский элемент для каждого адреса. Остальные теги являются дочерними для данного.
<loc> - обязательный
Адрес страницы. Адрес должен начинаться с протокола (например http) и заканчиваться завершающим слешом, если такой слеш требуется для веб-сервера. Значение должно быть менее 2,048 символов.
<lastmod> - необязательный
Дата последнего изменения файла. Дата должна быть в формате W3C Datetime. Этот формат позволяет опыстить часть даты, где указано время, и оставить только непосредственно дату YYYY-MM-DD.
Следует отметить, что этот тег не связан с серверным заголовком If-Modified-Since (304), который сервер может обрабатывать, а поисковые системы могут использовать информацию из двух источников раздельно.
<changefreq> - необязательный
Определяет примерную частоту обновления страницы. Это значение предоставляет общую информацию для поисковых систем и может в точности не соответствовать частоте переиндексации страницы. Возможные значения:
always
hourly
daily
weekly
monthly
yearly
never
Значение "always" следует использовать для документов, которые изменяются при каждом их новом запросе. Значение "never" следует использовать для описания неизменяющихся, "архивных" адресов.
Следует отметить, что значение данного тега рассматривается как дополнительная информация, hint, но не жесткая инструкция или команда. Роботы поисковых систем будут принимать во внимание эту информацию в процессе определения частоты переиндексации, однако они могут переиндексировать страницу, помеченную "hourly", намного реже, чем раз в час, а страницу, помеченную "yearly", намного чаще, чем раз в год. Индексаторы могут периодически перезапрашивать страницы, помеченные "never", а значит они могут отследить неожиданные изменения на этих страницах.
<priority> - необязательный
Приоритет заданного URL относительно других страниц на этом же сайте. Допустимые значения параметра лежат в диапазоне от 0.0 до 1.0. Значение этого параметра не определяет приоритет страницы относительно страниц других сайтов — оно только позволяет поисковым системам узнать, какие страницы своего сайта вы полагаете наиболее важными для индексации.
Значение по умолчанию равно 0.5.
Следует отметить, что приоритет, которые вы определяете для страниц не повлияет на позицию страницы в результатах поиска. Поисковые системы могут использовать эту информацию при выборе между некоторыми страницами на одном и том же сайте, а значит вы можете увеличить вероятность попадания наиболее важных страниц сайта в индексы поисковых систем.
Также следует отметить, что присваивание высокого приоритета всем страницам сайта вам, скорее всего, не поможет. Поскольку приоритет относительный, он дает возможность сравнивать страницы только в пределах сайта.
Экранирование спецсимволов
Ваш файл Sitemaps должен быть в кодировке UTF-8 (в большинстве случаев можно выбрать кодировку при сохранении файла). Как и во всех файлах формата XML, все специальные символы, перечисленные в таблице ниже, в значениях данных (включая URL должны быть специальным образом экранированы.
СимволЭкранирование
Амперсанд &&;
Одинарная кавычка '';
Двойная кавычка "";
Знак больше >>;
Знак меньше <<;
Дополнительно, все адреса (включая адрес Sitemap), должны быть экранированы и кодированы (URL-escaped and encoded) для совместимости с веб-сервером, где они размещаются. Однако, если для определения адресов используются скрипты, приложения или лог-файлы (что-либо, кроме набирания их вручную), эта процедура выполняется автоматически. Пожалуйста проверьте соответствие ваших адресов стандарту для URI RFC-3986, стандарту RFC-3987 и XML стандарту.
Ниже пример адреса страницы, где используется не-ASCII символ (ü), как и символ, требующий экранирования (&):
Quote
http://www.example.com/ümlat.html&q=name
Ниже тот же адрес, кодированный в ISO-8859-1 (для размещения на сервере с поддержкой соответствующей кодировки) и URL-кодированный:
Quote
http://www.example.com/%FCmlat.html&q=name
Ниже представлен тот же адрес, кодированный в UTF-8 (для размещения на сервере с поддержкой соответствующей кодировки) и URL-кодированный:
Quote
http://www.example.com/%C3%BCmlat.html&q=name
Ниже тот же самый адрес, но еще и с экранированием спецсимволов:
Quote
http://www.example.com/%C3%BCmlat.html&q=name
Пример XML Sitemap
Следующий пример представляет Sitemap в XML формате. Sitemap в примере содержит небольшое количество адресов страниц, для каждой из которых используется различный набор необязательных параметров.
Quote
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.example.com/catalog?item=12&desc=vacation_hawaii</loc>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>http://www.example.com/catalog?item=73&desc=vacation_new_zealand</loc>
<lastmod>2004-12-23</lastmod>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>http://www.example.com/catalog?item=74&desc=vacation_newfoundland</loc>
<lastmod>2004-12-23T18:00:15+00:00</lastmod>
<priority>0.3</priority>
</url>
<url>
<loc>http://www.example.com/catalog?item=83&desc=vacation_usa</loc>
<lastmod>2004-11-23</lastmod>
</url>
</urlset>
Использование индексных файлов Sitemap (группировки нескольких файлов Sitemap)
Можно создать несколько файлов Sitemap, но каждый файл Sitemap не должен содержать более 50 000 адресов и не должен превышать объем в 10 Мегабайт (10 485 760 байт). При желании можно сжать файлы Sitemap с помощью gzip, чтобы не превысить 10MB и,тем самым, уменьшить объем исходящего трафика. Если возникает необходимость указать более 50 000 адресов, следует создать несколько файлов Sitemap. Если вы создаете несколько файлов Sitemaps, то следует все их перечислить в специальном индексном файле. Индексные файлы Sitemaps не должны содержать ссылок на более, чем 1000 обычных Sitemaps и объем индексного файла не должен превышать 10 Мбайт (10 485 760 байт). XML формат индексного файла аналогичен формату обычного файла Sitemaps.
Обязательные требования к индексному файлу Sitemaps:
Индексный файл должен начинаться открывающим тегом <sitemapindex> и заканчиваться закрывающим тегом </sitemapindex>.
Включать элемент <sitemap> для каждого файла Sitemaps как родительский XML тег.
Включать дочерний элемент <loc> для каждого родительского элемента <sitemap>.
Необязательный тег <lastmod> также доступен для индексных файлов Sitemaps.
Примечание: индексный файл Sitemaps может включать ссылки на файлы Sitemaps только на том же домене, где находится сам индексный файл. Например, webartsolutions.com/sitemap_index.xml может включать файлы Sitemaps на webartsolutions.com, но не на chernyshov.kiev.ua или notes.webartsolutions.com. Как и обычные файлы Sitemaps, индексные файлы должны быть в кодировке UTF-8.
Пример индексного файла Sitemaps
В следующем примере представлен индексный файл Sitemaps, который содержит ссылки на два обычных файлаSitemaps:
Quote
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://www.example.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>
Примечание: Адреса обычных Sitemaps в индексном файле, как и другие значения в XML файлах, должны быть экранированы.
Определение XML тегов индексного файла Sitemaps
<sitemapindex> - обязательный
Инкапсулирует информацию о всех перечисленных Sitemaps.
<sitemap> - обязательный
Инкапсулирует информацию об отдельно взятом файле Sitemaps.
<loc> - обязательный
Определяет местанахождение файла Sitemaps.
<lastmod> - необязательный
Определяет время, когда был изменен соответствующий файл Sitemaps. Оно не обязательно соответствует дате изменения каких-либо страниц в соответствующем Sitemaps. Значение тега lastmod должно быть в формате W3C Datetime.
Предоставляя даты последнего изменения соответствующих файлов Sitemaps вы позволите роботам поисковых систем запрашивать только те файлы Sitemaps, которые изменялись со времени последней их загрузки. Такой механизм запросов индексных и обычных файлов Sitemaps позволит роботам поисковых систем быстро обнаруживать новые страницы даже на очень больших сайтах.
Местонахождение файла Sitemaps
Местонахождение файла Sitemaps определяет совокупность адресов страниц, которые могут быть включенры в этот Sitemaps. Файл Sitemaps, размещенный по адресу example.com/catalog/sitemap.xml может содержать только адреса страниц, начинающихся с example.com/catalog/, но не может включать адреса, начинающиеся с example.com/images/.
Если у вас есть право на изменение документа по адресу example.org/path/sitemap.xml, это означает, что вы также имеете право предоставлять информацию об адресах, начинающихся с префикса example.org/path/. Адреса, которые являются действительными при их перечислении в файле example.com/catalog/sitemap.xml:
Quote
example.com/catalog/show?item=23
example.com/catalog/show?item=233&user=3453
Адреса, которые являются недействительными при их перечислении в example.com/catalog/sitemap.xml:
Quote
example.com/image/show?item=23
example.com/image/show?item=233&user=3453
example.com/catalog/page1.html
Вышеприведенный пример означает, что все перечисленные в Sitemaps адреса должны использовать тот же протокол и размещаться на том же домене, где и файл Sitemaps. Например, если файл Sitemaps размещается по адресу webartsolutions.com/sitemap.xml, он не может включать адреса с поддомена notes.webartsolutions.com. Адреса страниц, признанные недействительными, исключаются из дальнейшей обработки. Настоятельно рекомендуется размещать файлы Sitemaps в корневой директории веб-сервера. Например, если сайт находится по адресу webartsolutions.com, тогда индексный файл Sitemaps следует разместить по адресу webartsolutions.com/sitemaps.xml. В некоторых случаях может потребоваться создать разные файлы Sitemaps для разных разделов сайта (например в случае различного уровня доступа для записи данных в разные разделы сайта сотрудникам подразделений компании).
Если вы регистрируете Sitemaps по адресу с номером порта, следует включить данный номер порта во все адреса в файле Sitemaps. Например, если файл Sitemaps размещается по адресу www.example.com:100/sitemap.xml, тогда каждый адрес, указанный в файле должен начинаться с www.example.com:100.
Проверка файлов Sitemaps
Следующие XML schemas определяют элементы и аттрибуты, которые могут появиться в вашем файле Sitemaps. Вы можете загрузить эту эту схему по ссылке ниже:
Для файлов Sitemaps: http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
Для индексных файлов Sitemaps: http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd
Есть некоторое количество инструментов, которые могут помочь проверить структуру файлов Sitemaps, основываясь на этой схеме. Можно найти список таких инструментов по любой из ссылок, представленных ниже:
http://www.w3.org/XML/Schema#Tools
http://www.xml.com/pub/a/2000/12/13/schematools.html
Для проверки обычного или индексного файла Sitemaps по схеме, XML-файл должен содержать дополнительные заголовки, как показано ниже.
Файл Sitemaps:
Quote
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
...
</url>
</urlset>
Индексный файл Sitemaps:
Quote
<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
...
</sitemap>
</sitemapindex>
Расширение протокола Sitemaps
Вы можете расширить протокол Sitemaps, используя собственные пространства имен. Просто пропишите эти пространства имен в корневом элементе XML. Например:
Quote
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:example="http://www.example.com/schemas/example_schema"> <!-- namespace extension -->
<url>
<example:example_tag>
...
</example:example_tag>
...
</url>
</urlset>
Информирование поисковых роботов
После создания файла Sitemaps и размещения его на веб-сервере, следует проинформировать поддерживающие протокол поисковые системы о местонахождении файла с помощью сабмита адреса через соответствующий интерфейс поисковой системе или обычный HTTP-запрос. После этого поисковая система может запрашивать Sitemaps по указанному адресу и обрабатывать указанные в нем адреса.