Как использовать RDFa с тегом Google и HTML head ‹base›

На веб-сайте мы используем HTML-тег head base. Причина в удобстве ссылки на статические ресурсы через относительные URL-адреса, которые очень сложно изменить. URL-адреса содержания всегда являются полными. Итак, раздел head выглядит так:

<head>
    <base href="http://example.com/static/" />
</head>

Теперь мы используем RDFa для указания структурированных данных на странице. Чтобы заполнить, например, страницу schema:Product, скажите http://example.com/product1. Теперь проблема возникает из-за тега base: в отсутствие какого-либо другого исправления анализатор RDFa считает, что все данные RDFa относятся к http://example.com/static, а не к http://example.com/product1.

Мы пытались со смешанными результатами добавить свойство about="http://example.com/product1" либо к <html>, либо к <body>.

Это периодически работает с инструментом тестирования структурированных данных Google. Периодически в том смысле, что около 2 месяцев назад казалось, что он работает при добавлении в <body>, теперь он работает при добавлении в <head>.

Однако в Search Console в разделе «Структурированные данные» ситуация даже с перебоями не работает. Это работало около 8 месяцев назад с <html about="...">, но теперь это просто не работает. Я имею в виду, что страницы индексируются, но не структурированные данные.

Итак, существует ли стандартный, испытанный и проверенный способ заставить Google (и любой общий метаанализатор) правильно знать URL-адрес веб-страницы с общим тегом <base href="" />, который отличается от ее фактического URL-адреса?

Пример 1

Предположим, что следующее отображается с помощью HTTP GET http://bar.com/product1

<html prefix="schema: http://schema.org/">  
    <head>  
        <base href="http://foo.com/" />  
    </head>  
    <body about="http://bar.com/product1" typeof="schema:Product">  
        <span property="schema:name">Bar product</span>  
    </body>  
</html>  

Вышесказанное:

  • Работал с Google на основе Google Search Console / Structured Data ~ 8 месяцев назад и Google Structured Data Testing Tool ~ 2 месяца назад.
  • Не работает с Google на основе Google Search Console/структурированных данных с 8 минут назад (об ошибках не сообщается, но новый контент не загружается в отчет о структурированных данных), не анализируется с помощью Testing Tool ATM

Пример 2

<html prefix="schema: http://schema.org/" about="http://bar.com/product1" typeof="schema:Product">
    <head>  
        <base href="http://foo.com/" />  
    </head>  
    <body>  
        <span property="schema:name">Bar product</span>  
    </body>  
</html>  
  • Не выполнялся анализ с помощью Google Structured Data Testing Tool ~ 2 месяца назад
  • Парсинг с помощью Google Structured Data Testing Tool ATM
  • Не работает с Google на основе Google Search Console/банкомата структурированных данных (об ошибках не сообщается, но новый контент не загружается в отчет структурированных данных)

person Dinu    schedule 16.07.2018    source источник


Ответы (1)


Оба фрагмента вашего примера работают правильно в инструменте тестирования структурированных данных Google< /а>. Как и следовало ожидать, они генерируют один и тот же результат.

@type Product
@id http://bar.com/product1
name Барный продукт

Я не могу проверить это в Google Search Console, но могу предположить, что проблема, которую вы видите, не связана с разметкой RDFa.

В любом случае, вы можете попробовать использовать resource вместо about. Хотя в RDFa подходят оба способа, RDFa Lite поддерживает только resource . Я не говорю, что Google поддерживает только RDFa Lite (вероятно, нет, потому что их SDTT, кажется, поддерживает about в порядке), но когда они ссылаются на RDFa, они обычно ссылаются на спецификацию RDFa Lite.

<html prefix="schema: http://schema.org/">  
    <head>  
        <base href="http://foo.com/" />  
    </head>  
    <body resource="http://bar.com/product1" typeof="schema:Product">  
        <span property="schema:name">Bar product</span>  
    </body>  
</html>  
person unor    schedule 19.07.2018
comment
Спасибо, @unor, то, что вы сообщаете, наполовину верно: вариант ‹body about=... анализируется правильно, если вы вставляете HTML в SDTT; если вы загружаете его через GET (по URL-адресу), он волшебным образом перестает работать. Это всего лишь одно несоответствие с SDTT, другое заключается в том, что некоторое время назад было верно обратное (как упоминалось ранее): тогда ‹html about=... не работал. Третье несоответствие заключается в том, что ни один из них больше не работает при просмотре консоли поиска, новый контент не анализируется ни одним из двух. Я не пробовал использовать resource=, но about= работал нормально, пока не перестал работать... - person Dinu; 19.07.2018
comment
@Dinu: понятно, проблема в SDTT возникает только при проверке через URL. На протяжении многих лет я читал о многих проблемах такого рода (работает с проверкой вставки кода, не работает с проверкой URL). В то время как некоторые могут быть связаны с тем, как сервер отвечает, для других это не проблема. Я предполагаю, что это просто ошибка в SDTT. - person unor; 19.07.2018
comment
да, похоже на это, однако меня, очевидно, больше беспокоит фактический синтаксический анализ и результаты Google, то есть пустая консоль поиска ... Я надеялся, что есть какая-то авторитетная спецификация о том, как это сделать в сообществах Google или RDFa или где-то еще, или какой-то испытанный и проверенный способ, который пережил то, что кажется случайными изменениями в их парсере. - person Dinu; 19.07.2018
comment
Примечание: (обновленный вопрос). Судя по вашему ответу, мое описание было неясным: страницы проиндексированы (с точки зрения статического контента), это просто структурированные данные, которые не анализируются в Search Console. Он нормально анализируется для страниц без тега ‹base href=... /›, это только эти страницы, совсем недавно, и просто отсутствуют структурированные данные. - person Dinu; 19.07.2018