Поиск для сайта на базе SharePoint 2013. Часть 1: robots.txt, sitemap.xml и другие особенности

Часть 1: robots.txt, sitemap.xml и другие особенности
Часть 2. Адаптация сайта

Поиск в SharePoint 2013 получился у Microsoft более чем хорош. Благодаря этому SharePoint 2013 может рассматриваться как платформа, которая способна обеспечить поиск не только в корпоративной среде, но и на просторах интернета - для веб-сайта (одного или нескольких).

В сегодняшнем посте я покажу на примере как SharePoint 2013 индексирует содержимое веб-сайтов и его реакцию (или отсутствие таковой) на файлы robots.txt, sitemap.xml. Заодно про механизм запрета индексирования части содержимого веб-страницы и об одном мифе, с ним связанного.

Подопытный

Для демонстрации того, как поисковая система SharePoint 2013 работает с внешними веб-сайтами, я создал простой сайт search.vitalyzhukov.ru (он работает, кому интересно - можете посмотреть). Страницы на сайте самые обычные - просто HTML и ничего больше. Карта сайта следующая:

  • robots.txt
  • sitemap.xml
  • /default.html
  • /page1.html
  • /page2.html
  • /page3.html
    • /sub1/default.html
    • /sub1/page1.html
      • /sub1/sub2/default.html

Настраиваем профилирование краулера и начинаем эксперимент.

Запрет индексирования части документа

Для того, чтобы запретить SharePoint'у индексировать часть страницы, надо пометить контейнер, его содержащий, классом noindex (class="noindex"). В одном из блогов, посвященных SharePoint, говорилось, что этот механизм не работает с вложенными контейнерами и каждый из них надо явно помечать классов noindex, иначе его содержимое будет проиндексировано. Для проверки этого мифа все ссылки на страницы /page2.html и page3.html на тестовом сайте имеют следующий вид:

<div class="noindex">
  <a href="/page2.html">page2</a>
  <div>
    <a href="/page3.html">page3</a>
  </div>
</div>
HTML

Если описанный миф подтвердится, то страница page3.html будет проиндексирована. Запускаем обход содержимого и смотрим на результаты в fiddler'е:

Миф разрушен. Все содержимое контейнеров, значение атрибута class которых содержит noindex не индексируется поисковиком SharePoint 2013.

robots.txt

На изображении выше видно, что первое, что делает краулер - пытается найти файл robots.txt в корне сайта. Содержимое моего файла robots.txt следующее:

User-agent: *
Disallow: /sub1/sub2

Краулер не проиндексировал страницы, расположенные по адресу /sub1/sub2, т.к. это было явно запрещено в файле robots.txt.

Sitemap.xml

Для того, чтобы краулер SharePoint учитывал содержимое файла sitemap.xml, ссылку на него надо явно указывать в файле robots.txt. Добавим ссылку на sitemap.xml и выполним ещё один обход содержимого. Новая строка в robots.txt:

User-agent: *
Disallow: /sub1/sub2
Sitemap: http://search.vitalyzhukov.ru/sitemap.xml

Результат в fiddler'е:

Была также проиндексирована страница /sub1/page1.html. Никакие другие страницы демо-сайта не содержат ссылок на неё. Информация о ней содержится только в файле sitemap.xml:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://search.vitalyzhukov.ru</loc>
        <priority>1</priority>
    </url>
    <url>
        <loc>http://search.vitalyzhukov.ru/sub1/page1.html</loc>
        <priority>0.5</priority>
    </url>
</urlset>
XML

SharePoint 2013 индексирует страницы, информация о которых содержится в файле sitemap.xml.

rel="nofollow"

Ещё одна особенность поисковика SharePoint 2013. Ссылки имеющие атрибут rel="nofollow" будут проиндексированы. На демо-сайте это страница /nofollow.html, ссылка на которую есть в /default.html:

<a href="/nofollow.html" rel="nofollow">nofollow</a>
HTML

Теперь ясно как SharePoint индексирует веб-сайты. В следующей части я расскажу как адаптировать веб-сайт для индексации его силами SharePoint 2013.

Виталий Жуков

Виталий Жуков

Техлид, Архитектор, Разработчик, Microsoft MVP. Более 20 лет опыта в области системной интеграции и разработки программного обеспечения. Специализируюсь на проектировании и внедрении масштабируемых высокопроизводительных программных решений в различных отраслях.

Смотрите также