Использование sitemap.xml, robots.txt и meta

Опубликовано: 17.08.2009
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке
Содержание
Файл sitemap.xml

Файл sitemap.xml - это карта сайта, предназначенная для поисковых машин. С помощью файла sitemap.xml веб-мастеры могут сообщать поисковым системам о веб-страницах, которые доступны для сканирования. Но файл Sitemap.xml не является гарантией того, что веб-страницы будут проиндексированы поисковыми системами, это всего лишь дополнительная подсказка для сканеров, которые смогут выполнить более тщательное сканирование Вашего сайта.

Зачем нужна карта сайта

В сайте главное - структура. Структура определяет удобство для пользователя, а также и для поисковой системы, и для вас самих. Структуру необходимо разрабатывать с самого начала, на самом первом этапе планирования сайта.

Карта сайта необходима для навигации по сайту, также как географическая карта необходима для навигации морской. Только помните, что карта сайта совсем необязательно должна отражать внутреннюю, технически обусловленную структуру. Карта сайта должна быть смысловой структурой сайта, для того чтобы правильно ее построить необходимо хорошо понимать свою целевую аудиторию, то зачем пользователь приходит к вам на сайт и то, как он настроен воспринимать информацию. Собственно, это воображение должно определять все компоненты сайта - его программирование, дизайн и контент. Если у вас небольшой сайт с интуитивно понятной структурой, то вы в общем-то можете обойтись без карты сайта. Но в любом случае полезно просто для себя начертить эту схему, чтобы потом, уже после программирования сайта, не возникало вопросов «и о чем же мы будем рассказывать в этом разделе, какой поместим контент?». Такой вопрос свидетельствует о том, что вы плохо продумали ваше веб-творение. Цель карты сайта - это поставить в соответствие каждой странице сайта некий визуально-текстовый объект, а затем упорядочить эти объекты по логике их смысловых связей.

Сервис Xml-Sitemaps (http://www.xml-sitemaps.com/) позволит вам получить первичные данные для построения грамотной карты сайта. Вы получите информацию о количестве страниц, список неработающих ссылок, и сжатую карту сайта.

XML-формат файла Sitemap

Файл Sitemap.xml представляет собой XML-файл в кодировке UTF-8, в котором перечислены URL-адреса веб-сайта в сочетании с метаданными, связанными с каждым URL-адресом (дата его последнего изменения, частота изменений, его приоритетность на уровне сайта), чтобы поисковые cистемы могли более грамотно сканировать этот сайт.

Sitemap сотоит из обязательных тегов и опциональных. Все упомянутые URL-адреса в файле Sitemap должны быть с одного узла, например www.example.com или store.example.com.

Ниже приведен пример файла Sitemap, в котором содержится только один URL-адрес и использованы все необязательные теги. Необязательные теги выделены курсивом.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/</loc>
	       <lastmod>2009-06-29</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority>
	   </url>
</urlset>
Определения XML-тегов

Итак, давайте подробнее рассмотрим, какие же теги используются в файле sitemap.xml.

Инкапсулирует этот файл и указывает стандарт текущего протокола.

Атрибут Описание
<urlset> обязательный
<url> обязательный Родительский тег для каждой записи URL-адреса. Остальные теги являются дочерними для этого тега.
<loc> обязательный URL-адрес страницы. Этот URL-адрес должен начинаться с префикса (например, HTTP) и заканчиваться косой чертой, если Ваш веб-сервер требует этого. Длина этого значения не должна превышать 2048 символов.
<lastmod> необязательный Дата последнего изменения файла. Эта дата должна быть в формате W3C Datetime. Этот формат позволяет при необходимости опустить сегмент времени и использовать формат ГГГГ-ММ-ДД.
Обратите внимание, что этот тег не имеет отношения к заголовку "If-Modified-Since (304)", который может вернуть сервер, поэтому поисковые системы могут по-разному использовать информацию из этих двух источников.
<changefreq> необязательный Вероятная частота изменения этой страницы. Это значение предоставляет общую информацию для поисковых систем и может не соответствовать точно частоте сканирования этой страницы. Допустимые значения:
  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never
Значение"всегда" должно использоваться для описания документов, которые изменяются при каждом доступе к этим документам. Значение "никогда" должно использоваться для описания архивных URL-адресов.
Имейте в виду, что значение для этого тега рассматривается какподсказка, а не как команда. Несмотря на то, что сканеры поисковой системы учитывают эту информацию при принятии решений, они могут сканировать страницы с пометкой "ежечасно" менее часто, чем указано, а страницы с пометкой "ежегодно" - более часто, чем указано. Сканеры могут периодически сканировать страницы с пометкой "никогда", чтобы отслеживать неожиданные изменения на этих страницах.
<priority> необязательный Приоритетность URL относительно других URL на Вашем сайте. Допустимый диапазон значений - от 0,0 до 1,0. Это значение не влияет на процедуру сравнения Ваших страниц со страницами на других сайтах - оно только позволяет указать поисковым системам, какие страницы, по Вашему мнению, более важны для сканеров.
Приоритет страницы по умолчанию - 0,5.
Следует учитывать, что приоритет, который Вы назначили странице, не влияет на положение Ваших URL на страницах результатов той или иной поисковой системы. Поисковые системы используют эту информацию при обработке URL, которые относятся к одному и тому же сайту, поэтому можно использовать этот тег для увеличения вероятности присутствия в поисковом индексе Ваших самых важных страниц.
Кроме того, следует учитывать, что назначение высокого приоритета всем URL на Вашем сайте не имеет смысла. Поскольку приоритетность - величина относительная, этот параметр используется для того, чтобы определить очередность обработки URL в пределах сайта.
Маскирование символов

В файле Sitemap должна использоваться кодировка UTF-8. В XML-файлах для всех значений данных (включая URL-адреса) должно использоваться маскирование служебных символов, эти символы перечислены в таблице.

Символ Маскирование
Амперсанд & &amp;
Одинарные кавычки ' &apos;
Двойные кавычки " &quot;
Больше > &gt;
Меньше < &lt;

Маскирование так же применяется для всех не-ASCI символов, используемых в документе.

В следующем примере показан файл Sitemap в XML-формате. Sitemap в этом примере содержит небольшое число URL-адресов, каждый из которых использует разное сочетание необязательных параметров.

<?xml version="1.0" encoding="UTF-8"?>
<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&amp;desc=vacation_hawaii</loc>
       <changefreq>weekly</changefreq>
   </url>
   <url>
       <loc>http://www.example.com/catalog?item=73&amp;desc=vacation_new_zealand</loc>
       <lastmod>2004-12-23</lastmod>
       <changefreq>weekly</changefreq>
   </url>
   <url>
       <loc>http://www.example.com/catalog?item=74&amp;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&amp;desc=vacation_usa</loc>
       <lastmod>2004-11-23</lastmod>
   </url>
</urlset>
Местоположение файла Sitemap

Можно создать несколько файлов Sitemap, однако в каждом из этих файлов должно быть не более 50000 URL, а размер каждого из этих файлов не должен превышать 10 МБ. При необходимости файл Sitemap можно сжать с помощью архиватора gzip, чтобы уменьшить требования к пропускной способности канала. Однако размер файла sitemap без сжатия не должен превышать 10 МБ. Если необходимо перечислить более 50000 URL-адресов, следует создать несколько файлов Sitemap.

Местоположение файла Sitemap определяет набор URL-адресов, которые можно включить в этот Sitemap. Файл Sitemap, расположенный в каталоге http://primer.ru/catalog/sitemap.xml, может включать любые URL-адреса, начинающиеся с http://primer.ru/catalog/, но не должен включать URL-адреса, начинающиеся с http://primer.ru/images/. Это означает, что сканер проходит только по каталогу, в котором размещен файл-карта, а так же по его подкаталогам, если же сканер встретит ссылку на документ из другого каталога, то вся карта будет отвергнута как ошибочная.

Так же все URL-адреса, перечисленные в файле Sitemap, должны использовать один и тот же протокол (в данном случае - HTTP) и должны быть размещены на том же хосте, что и файл Sitemap. Например, если файл Sitemap расположен по адресу http://www.primer.ru/sitemap.xml, в нем могут быть указаны URL-адреса из субдомена http://subdomen.primer.ru.

Примеры допустимых URL в http://primer.ru/catalog/sitemap.xml включают:

http://example.com/catalog/show?item=23
http://example.com/catalog/show?item=233&user=3453

К недопустимым URL-адресам в файле http://primer.ru/catalog/sitemap.xml относятся следующие:

http://example.com/image/show?item=23
http://example.com/image/show?item=233&user=3453
https://example.com/catalog/page1.php

URL-адреса, которые считаются недопустимыми, исключаются из дальнейшего рассмотрения. Настоятельно рекомендуется поместить файл Sitemap в корневой каталог Вашего веб-сервера. Например, если адрес Вашего сервера - primer.ru, Ваш файл индекса Sitemap должен быть размещен по адресу http://primer.ru/sitemap.xml. Возможно, в некоторых случаях нужно будет создать различные файлы Sitemap для различных путей на Вашем сайте (например, если полномочия доступа в Вашей организации установлены таким образом, что доступ с правом записи к различным каталогам предоставляется отдельно).

Если при передаче файла Sitemap используется путь, содержащий номер порта, необходимо включить этот номер порта в путь в каждом URL, перечисленном в файле Sitemap. Например, если Ваш файл Sitemap находится в http://www.primer.ru:100/sitemap.xml, то каждый URL, перечисленный в файле Sitemap, должен начинаться с http://www.primer.ru:100.

Проверка файла Sitemap

Для проверки Вашего файла Sitemap или файла индекса Sitemap по этой схеме в XML-файл нужно добавить дополнительные заголовки, как показано ниже.

Файл Sitemap:

<?xml version='1.0' encoding='UTF-8'?>
<urlset 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"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
       ...
   </url>
</urlset>

Файл индекса Sitemap:

<?xml version='1.0' encoding='UTF-8'?>
<sitemapindex 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/siteindex.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
       ...
   </sitemap>
</sitemapindex>
Уведомления для сканеров поисковых систем

После того как файл Sitemap создан и размещен на веб-сервере, необходимо сообщить о местонахождении этого файла поисковым системам, поддерживающим этот протокол. Это можно сделать следующим образом.

  • передать файл Sitemap с помощью интерфейса передачи поисковой системы
  • указать местоположение файла Sitemap в файле robots.txt

После чего поисковые системы смогут извлечь файл Sitemap и разрешить своим сканерам доступ к URL-адресам.

Чтобы указать местоположение файла Sitemap в файле robots.txt, нужно добавить в этот файл строку следующего вида:

Sitemap: http://www.example.com/sitemap.xml

Можно указать несколько файлов Sitemap:

Sitemap: http://www.example.com/sitemap-host1.xml
Sitemap: http://www.example.com/sitemap-host2.xml

Эта инструкция не зависит от строки агента пользователя, поэтому неважно, где она размещается в файле. При наличии файла индекса Sitemap можно включить местоположение только этого файла. Перечислять каждый отдельный файл Sitemap, указанный в файле индекса, не нужно.

Файл robots.txt

Единственное, что может делать файл robots.txt - это закрывать от индексации файлы и каталоги, причем делать это он может выборочно, ориентируясь на имена роботов поисковых машин. Если Вы хотите, чтобы ваш сайт был проиндексирован корректно, то присутствие файла robots.txt в корневой папке сайта обязательно, имя файла должно быть в нижнем регистре. Файл с именем robots.txt, находящийся в других каталогах или содержащий буквы верхнего регистра, будет проигнорирован. Файл robots.txt формируется из записей, по две строки в каждой: первая строка содержит имя робота, вторая - перечень закрываемых каталогов и/или страниц.

Пример записи, которая ничего не запрещает:

User-agent: *
Disallow:

Звездочка в строке User-agent говорит, что эта запись относится ко всем роботам. Строка Disallow не содержит записей, что означает отсутствие запретов. В этой строке запрещено использовать маски множественных выделений, например *.vbs

Пример записи, запрещающий роботу Yandex любую индексацию сайта, разрешающий любую индексацию для робота Google, а так же для любых других роботов:

User-agent: Yandex
Disallow: /
User-agent: googlebot
Disallow:

Пример запрета индексации файлов в определенных каталогах:

User-Agent: *
Disallow: /cgi-bin/
Disallow: /news/img/
Disallow: /my/my.html
Disallow: /my/script

В указанном примере всем роботам закрыт доступ в каталоги "cgi-bin", "news/img", а так же закрыт доступ к конкретному файлу "my/my.html" и ко всем файлам, начинающимся с "script", размещенных в каталоге "my".

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

Теги <meta>

Теги <meta> - это теги, содержащие информацию документа о самом себе, а так же команды для браузера. В первые годы развития интернета эти теги использовались поисковыми системами как источник информации, но теперь, из-за повсеместного использования этих тегов в целях поискового спама, они потеряли свое значение. В настоящий момент большинство метатегов не учитывается поисковыми системами. Как правило, сейчас функцию мета-тегов для индексации выполняет тег <title>.Исключение составляют служебные, предложенные самими поисковыми системами, например тег с ключем доступа к определенным службам или тег проверки принадлежности сайта.

В связи с тем, что мета-теги несут чисто служебную функцию, и, кроме того, значительно увеличивают размер гипертекстового документа, начинающие веб-разработчики зачастую предпочитают их игнорировать. Тем не менее, давайте рассмотрим, как же использовать тег <meta>.

Итак, мета-теги - это HTML- или XHTML-теги, предназначенные для предоставления структурированных метаданных о веб-странице. Мета-теги помещаются внутрь тега <head>, после тега <title>. Мета-теги используются для указания описания страницы, ключевых слов и других данных. У тега <meta> допустимы четыре атрибута: content, http-equiv, name и scheme. Из них только обязателен лишь атрибут content.

Мета-теги разделены на две основные группы: NAME и HTTP-EQUIV. Группа NAME отвечает за текстовую информацию о странице, ее авторе и рекомендации для поисковых систем. Группа HTTP-EQUIV формирует заголовок страницы и определяет его обработку, как правило, они управляют действиями браузеров и используются для формирования информации, выдаваемой обычными заголовками.

Группа NAME
Мета-тег Author и Copyright

Функция тегов - идентификация автора или принадлежности документа. Эти теги, как правило, не используются одновременно. Тег Author содержит имя автора Интернет-страницы, в том случае, если сайт принадлежит какой-либо организации, целесообразнее использовать тег Copyright. Выглядит данный тег следующим образом:

<meta name="Author" content="Vitaly Bochkarev" />

Кроме этого, теги Author и Copyright могут содержать дополнительный атрибут "lang", позволяющий определить язык

<meta name="Author" lang="ru" content="Vitaly Bochkarev" />
Мета тег Description

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

<meta name="Description" content="Индексация сайта поисковыми системами" />
Мета тег Document-state

Этот тег также используется при индексации страницы в поисковых системах. Тег может принимать два значения: "Static" и "Dynamic". Значение "Static" отмечает, что системе нет необходимости индексировать документ в дальнейшем, а "Dynamic" позволяет регулярно индексировать страницу. Тем не менее, значение "Static" не означает, что страница будет проиндексировать только один раз. Обычно роботы поисковых систем время от времени проверяют все страницы сайта, если они, конечно, не запрещены для индексации вообще.

<meta name="Document-state" content="Dynamic" />
Мета-тег Generator

Используется генераторами гипертекста. Как правило редко несет в себе смысловую нагрузку, а лишь означает редактор, в котором создавалась страница.

<meta name="Generator" content="Visual Studio 2008" />
Мета-тег Keywords

Данный мета-тег поисковые системы использовали для того, чтобы определить релевантность ссылки. При формировании данного тега необходимо использовать только те слова, которые содержатся в самом документе. Рекомендованное количество слов в данном теге - не более десяти.

<meta name="Keywords" content="сайт, индексация, поиск, карта" />

В настоящее время этот тег не учитывается поисковыми машинами.

Мета-тeг Resource-type

Тег Resource-type описывает свойство или состояние страницы. Если значения тега отличается от "Document:, то поисковые системы его не индексируют. Возможные значения тега "build", "site-languages", "document", "rating", "version", "operator", "formatter", "creation" и другие.

<meta name="Resource-type" content="Document" />
Мета-тeг Revisit

Тег позволяет управлять частотой индексации документа в поисковой системе. Для переиндексации сайта раз в две недели используется тег следующего вида:

<meta name="Revisit" meta content="14" />
Мeтa-тeг Robots

Тег формирует информацию для роботов поисковых систем. Значения тега могут быть следующими: "Index" (страница должна быть проиндексирована), "Noindex" (документ не индексируется), "Follow"(гиперссылки на странице отслеживаются), "Nofollow" (гиперссылки не прослеживаются), "All" (включает значения index и follow), "None" (включает значения noindex и nofollow).

<meta name="Robots" meta content="All" />
Мeтa-тeг Subject

Определяет тематику документа. Практически бесполезен из-за отсутствия четкой и согласованной классификации тем в различных поисковых системах.

<meta name="Subject" meta content="Веб-разработка" />
Мeтa-тeг URL

Тег прекращает индексацию страницы поисковой системой, и перенаправляет робота поисковой машины по указанной ссылке. Тег применяется для отмены индексации "зеркала" и генерируемых страниц.

<meta name="URL" content="http://go.forward.ru" />
Группа HTTP-EQUIV
Мeтa-тeг Content-Language

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

<meta http-equiv="Content-Language" content="ru" />

Некоторые значения тега Content-Language:

de Немецкий
el Греческий
en Английский
es Испанский
fr Французский
it Итальянский
ja Японский
he Иврит
nl Голландский
ru Русский
pt Португальский
zh Китайский

В спецификации HTML 4.0 есть альтернативная возможность явного указания языка:

<html lang="en" />
Мeтa-тeг Content-Script-Type

Определяет язык программирования сценариев. Если этот тег не прописан, то следует указать язык программирования в каждом теге <script>, к тому же тег <script> обладает более высоким приоритетом по сравнению с Content-Script-Type.

<meta http-equiv="Content-Script-Type" content="text/javascript" />

Некоторые значения тега Content-Script-Type:

text/javascript JavaScript
text/perlscript PerlScript
text/tcl TCL
text/vbscript VBScript
Мeтa тeг Content-Style-Type

Указание языка таблицы стилей, по умолчанию используется значение "text/css". тег <style>, в котором указан тип языка таблицы стилей, обладает более высоким приоритетом по сравнению с Content-Style-Type

<meta http-equiv="Content-Style-Type" content="text/css" />
Мeтa-тeг Content-Type

Определяет тип документа и его кодировку. Применяя этот тег нужно учитывать следующее:

  • кодировка символов текста должна соответствовать кодировке, указанной в теге;
  • сервер не должен менять кодировку текста при обработке запроса браузера;
  • сервер меняет кодировку текста, он должен скорректировать или удалить мета тег Content-Type.

В противном случае сервер автоматически определит кодировку запроса клиента и отдаст страничку клиенту перекодированной. Клиент, в свою очередь, будет читать документ в соответствии с мета тегом Content-Type. И, если кодировки не совпадут, то прочитать документ можно будет только после ручного выбора трубуемой кодировки документа.

<meta http-equiv="Content-Type" content="UTF-8" />

Некоторые значения тега Content-Type:

UTF-8 Юникод
ISO-8859-1 Latin-1, для большинства западноевропейских языков
Windows-1251 Кириллица (Windows)
KOI8-r Кириллица (КОИ8-Р)
cp866 Кириллица (DOS)
Windows-1252 Западная Европа (Windows)
Windows-1250 Центральная Европа (Windows)
shift_jis Япония (Windows)
Мeтa-тeг Expires

Управляет кэшированием. Если указанная в теге дата прошла, то клиент должен сделать повторный сетевой запрос, а не использовать копию из кэша. Если изначально указать прошедшую дату, то документ не будет кэшироваться. Но следует учитывать, что некоторые поисковые роботы могут отказаться индексировать документ с устаревшей датой. Дата должна указываться в стандарте RFC850.

<meta http-equiv="Expires" content="Wed, 26 Feb 1999 08:21:57 GMT" />
Мeтa-тeг PICS-Label

Тег PICS-Label (Platform-Independent Content rating Scheme Label) - указывает уровень доступности сайта (в связи с возможными тематиками sex и violence), но может использоваться и в других целях.

Мeтa-тeг Pragma

Контроль кэширования при страницах, получаемых путем работы заданного скрипта.

Мeтa-тeг Refresh

Задержка времени (в секундах) перед тем, как браузер обновит страницу. Кроме того, может использоваться автоматическая загрузка другой страницы.

Пример ежеминутного обновления страницы

<meta http-equiv="Refresh" content="60" />

Такой пример перенаправит клиента на адрес http://www.microsoft.com через 4 секунды после загрузки страницы:

<meta http-equiv="Refresh" content="4; URL=http://www.microsoft.com" />
Мeтa-тeг Set-Cookie

Настройка cookie браузера. Перед запросом к серверу, браузер проверяет cookie. И если атрибуты NAME, DOMAIN и PATH сохраненного cookie совпадают, то браузер посылает это cookie серверу. Если cookie принимает новое значение, старое значение удаляется.

<meta http-equiv="Set-Cookie" content="NAME=value; EXPIRES=date; DOMAIN=domain_name;
	        PATH=path; SECURE" />

Значения тега Set-Cookie:

NAME Имя cookie, которое не может содержать символы перевода строки, пробелов, точки с запятой и табуляции.
EXPIRES Время, до которого хранить cookie, в формате "Wdy, DD-Mon-YYYY HH:MM:SS GMT". Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия браузера.
DOMAIN Домен, для которого задается значение cookie. Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, с которого было выставлено значение cookie.
PATH Устанавливает подмножество документов, на которые распространяется действие cookie. При значение "/doc" действие cookie будет распространено на все файлы и каталоги в этой директории начинающееся на "doc" (/doc/, /document/, /doc2/, docs.html, doc-test.htm). Если этот атрибут опущен, то значение cookie распространяется только на документы директории, в которой расположен текущий документ.
SECURE Указывает, что информация о cookie должна пересылается через протокол HTTPS. В противном случае информация о cookie будет пересылается по протоколу HTTP.
Мeтa-тeг Window-target

Мета тег определяет окно текущей страницы. Приведенный пример может быть использован для прекращения появления новых окон браузера при применении фреймовых структур.

<meta http-equiv="Window-target" content ="_top" />
Виталий Бочкарев