XML сайты в результатах поиска

от автора

Что такое XML сайт

XML сайт это сайт страницы которого являются простыми XML файлами с MIME типом "text/xml". Они содержат только уникальные данные для этой страницы.

В таком XML файле задаётся ссылка на XSLT шаблон который преобразует XML в HTML или в XHTML в браузере пользователя.

Проблема

Для классических html веб страниц поисковики в качестве заголовка отображают содержимое тега title. В описании отображается кусочки текста с найденными ключевыми словами или содержимое тега meta description.

Поисковики обычно не исполняют скрипты на страницах которые индексируют и соответственно не видят конечный вариант страницы после их исполнения. Соответственно они не видят теги title и meta которые вставляются XSLT шаблоном. Они индексируют текст который есть в XML документе как есть.

Решение

Наша задача правильно добавить теги title и meta в XML чтобы браузер, поисковик и меседжер в котором отправляется ссылка на страницу их понимали.

Таким же образом можно будет добавить и другие HTML теги для поисковиков, меседжеров и даже браузера если он вдруг не исполнит XSLT шаблон.

Как страница отображается без тегов

Например у нас такой XML:

<запись>     <заголовок>Текст заголовка</заголовок>     <текст>Текст записи</текст> </запись>

Как он отображается в поиске без title и meta тегов:

  1. XML показывается в одну строку (Гугл)
    Заголовок: <запись><заголовок>Текст заголовка</заголовок><текст>...
    Описание: <запись><заголовок>Текст заголовка</заголовок><текст>Текст записи</текст></запись>
  2. Сокращённый вариант (duckduckgo.com)
    Заголовок: example.com
    Описание: запись>заголовок>Текст заголовка...
  3. Только содержимое тегов в загаловке (startpage.com)
    Заголовок: Текст заголовка Текст записи
  4. Страница не отображается в поиске (Яндекс)
    Я запускал несколько раз переиндексацию страницы но яндексу упорно не нравился mime тип страницы. Потом когда я начал писать эту статью они мне прислали увидомление что добавили в поиск. Но сегодня страница снова исчезла из поиска.

Вставляем теги

Для того чтобы вставить теги title и meta в xml и при этом браузер и поисковик понимали что это html теги им надо задать пространство имён "http://www.w3.org/1999/xhtml".

Варианты вставки:

  1. Задать префикс для html тегов.

    <!-- родительском элементе объявляем префикс 'xh' для xhtml элементов --> <запись xmlns:xh="http://www.w3.org/1999/xhtml">     <!-- далее используем этот префикс перед именем элемента -->     <xh:title>Текст заголовка для страницы поиска и меседжеров</xh:title>     <xh:meta name ="description"               content="Часть текста записи для страницы поиска и меседжеров"/>      <!-- у элементов без префикса пространство имён остаётся пустым -->     <заголовок>Текст заголовка</заголовок>     <текст>Текст записи</текст> </запись>

    Этот вариант самый краткий но выяснилось что Гугл его не понимает.

  2. Обернуть в элемент с заданным пространством имён поумолчанию.

    <запись>     <!-- в теге head определяем пространство имён поумолчанию -->     <head xmlns="http://www.w3.org/1999/xhtml">         <!-- все дочерние элементы наследуют это пространство имён -->         <title>Текст заголовка</title>         <meta name="description" content="Часть текста записи для страницы поиска и меседжеров"/>     </head>      <!-- элементы вне тега head остаются с пустым пространством имён -->     <заголовок>Текст заголовка</заголовок>     <текст>Текст записи</текст> </запись>

    Тут пространство имён поумолчанию задаётся в родительском элементе и распространяется на дочерние.

    Гугл понял такой вариант и иcпользовал текст из title в качестве заголовка и текст из meta description в качестве описания страницы.

    С этим вариантом возникает проблема на web.archive.org. Архив в данном виде воспринимает страницу как html и пихает в неё свои теги "поправляя" те теги которых не знает. В результате документ перестаёт быть правильным XML и не отображается.

    Пример работы web.archive.org над этим вариантом.

    &lt;запись&gt;     <head xmlns="http://www.w3.org/1999/xhtml"><script ...</script>         <title>Текст заголовка</title>         <meta name="description" content="Часть текста записи для страницы поиска и меседжеров"/>     </head>     &lt;заголовок&gt;Текст заголовка&lt;/заголовок&gt;     &lt;текст&gt;Текст записи&lt;/текст&gt; &lt;/запись&gt;

  3. Задать пространство имён поумолчанию каждому элементу индивидуально.

    <запись>      <!-- задаём пространство имён каждому элементу индивидуально -->     <title xmlns="http://www.w3.org/1999/xhtml">Текст заголовка</title>     <meta xmlns="http://www.w3.org/1999/xhtml" name="description" content="Часть текста записи для страницы поиска и меседжеров"/>      <!-- остальные элементы остаются с пустым пространством имён -->     <заголовок>Текст заголовка</заголовок>     <текст>Текст записи</текст> </запись>

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

    Этот вариант я только поставил на тест так что результат отображения в Гугле не известен.

Результат

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

ссылка на оригинал статьи https://habr.com/ru/post/510318/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *