Как сделать так, чтобы ссылка на карту сайта в заголовке страницы проходила валидатор W3C?
Я пытаюсь пропустить страницу через W3C Validator. Проверка терпит неудачу на карте сайта, которую я включаю так:
<link rel="sitemap" type="application/xml" title="Sitemap" href="../sitemap.xml" />
Я получаю ошибку:
Карта сайта с недопустимым значением для атрибута, ссылающегося на элемент: ссылка не является абсолютной IRI. Строка sitemap не является зарегистрированным ключевым словом или абсолютным URL.
Я пытался навсегда это исправить, но ничего, что я пытаюсь, похоже, не работает, плюс это рекомендуемый макет от Google и Html5 Boilerplate.
Что-то не так с моим синтаксисом? Кажется правильным, но почему это не проходит?
5 ответов
Короткий ответ: вы не можете.
HTML 5 определяет значения, которые вам разрешено использовать в rel
а также sitemap
не является одним из тех, которые признаны валидатором.
Сообщение об ошибке говорит о том, что вы можете зарегистрировать новый тип ссылки в вики, но карта сайта уже существует, поэтому вам просто нужно подождать, пока разработчики валидатора обновят валидатор, чтобы отразить новое состояние вики (при условии, что никто не удаляет запись).
(Основные проблемы здесь заключаются в том, что наличие спецификации, использующей вики-страницу в качестве нормативного ресурса, является чокнутым, что HTML 5 все еще является черновиком и что валидатор HTML 5 все еще считается экспериментальным).
Заглядывает из будущего (июнь 2021 г.).
Вход:
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
теперь принимается валидатором W3 HTML5
Проверка следующего HTML-файла:
<!DOCTYPE html>
<html lang="en-gb">
<head>
<meta charset="utf-8">
<title>My Rel Sitemap Test</title>
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
</head>
<body>
<h1>My Rel Sitemap Test</h1>
<p>This is my Rel Sitemap Test.</p>
<p>The document passes.</p>
<p>This document is valid HTML5 + ARIA + SVG 2 + MathML 3.0</p>
</body>
</html>
здесь: https://validator.w3.org/nu/
возвращает ответ:
Проверка документов завершена. Никаких ошибок или предупреждений для отображения.
Если вам нужен только валидатор w3c для передачи, возможно, вы могли бы обнаружить его пользовательский агент и изменить выходные данные вашего приложения, чтобы оно прошло. Я считаю, что строгая валидация - это скорее маркетинговая выгода, чем что-либо еще, когда дело доходит до незначительных проблем, подобных этой. Если другие разработчики используют валидатор w3c, чтобы сказать, что веб-сайт вашего клиента полон ошибок, то это раздражает.
Вы можете проверить, содержит ли HTTP_USER_AGENT "W3C_Validator", и удалить нестандартный код.
В CFML я написал такой код, чтобы моя ссылка на авторство Google все еще могла проверяться на валидаторе w3c:
<cfif cgi.HTTP_USER_AGENT CONTAINS "W3C_Validator">data-</cfif>rel="publisher"
Я только что опубликовал вопрос на форуме Google, могут ли они начать поддерживать data-rel или подтвердить, что поиск в Google уже его поддерживает. Предоставляемый им инструмент тестирования структурированных данных не анализирует данные, когда я тестировал его сейчас. http://www.google.com/webmasters/tools/richsnippets
Надеемся, что кто-то ответит: https://groups.google.com/a/googleproductforums.com/d/msg/webmasters/-/g0RDfpFwmqAJ
Строка sitemap не является зарегистрированным ключевым словом или абсолютным URL
Ваша проблема прямо здесь:
href="../sitemap.xml"
Вы используете родственника URL
чтобы указать, где находится ваша карта сайта. Попробуйте поставить что-то вроде этого:
<link rel="sitemap" type="application/xml" title="Sitemap" href="/myfolder/sitemap.xml" />
РЕДАКТИРОВАТЬ
Поскольку роботы сначала сканируют вашу корневую директорию, лучше всего использовать sitemap.xml
файл в вашем корневом каталоге:
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" />
или же
<link rel="sitemap" type="application/xml" title="Sitemap" href="http://yoursite.com/sitemap.xml" /> <!-- No www -->
Также,
Убедитесь, что ваш link
тег является ребенком вашего head
тег
Попробуй это! Альтернативный атрибут rel распознается также для каналов RSS и ATOM. Я лично использую это для всех документов XML.