Я использую согласование содержания для переключения между application/xhtml+xml
и text/html
точно так же, как Вы описываете без того, чтобы замечать любые проблемы с поисковыми ботами. Строго, хотя, необходимо принять во внимание значения q в принять заголовке, который указывает на предпочтение агента пользователя к каждому типу контента. Если агент пользователя предпочитает принимать text/html
, но примет application/xhtml+xml
как альтернативу, то для самой большой безопасности необходимо служить страницей text/html
.
Единственная настоящая проблема состоит в том, что браузеры отобразят ошибки анализа XML, если Ваша страница будет содержать недопустимый код, в то время как в тексте/HTML они, по крайней мере, отобразят что-то видимое.
нет действительно никакого преимущества отправки xml, если Вы не хотите встроить svg или делаете обработку XML страницы.
Одной проблемой с согласованием содержания (и с обслуживанием другого содержания/заголовков к различным агентам пользователя) являются прокси-серверы. Рассмотрение следующего; я столкнулся с этим назад в Netscape 4 дня и стеснялся стороны сервера, осуществляющей сниффинг с тех пор.
Пользователь загрузки Ваша страница с Firefox, и получает Тип контента XHTML/XML. ISP пользователя имеет прокси-сервер между пользователем и Вашим сайтом, таким образом, эта страница теперь кэшируется.
Пользователь B, тот же ISP, запрашивает Вашу страницу с помощью Internet Explorer. Запрос поражает прокси сначала, прокси говорит "эй, у меня есть та страница, здесь это; как application/xhtml+xml". Пользователю B предлагают загрузить файл (поскольку IE загрузит что-либо отправленное как application/xhtml+xml.
можно двигаться, эта конкретная проблема при помощи эти Варьируются Заголовок , как описано на этой Береа Street, 456, статья. Я также предполагаю, что прокси-серверы стали немного более умными об автоматическом обнаружении этих вещей.
Вот то, где CF, который является HTML/XHTML, начинает закрадываться. При использовании согласования содержания для обслуживания application/xhtml+xml одному набору агентов пользователя и текста/HTML к другому набору агентов пользователя, Вы полагаетесь на все прокси между своим сервером и своими пользователями, чтобы быть хорошего поведения.
, Даже если все прокси-серверы в мире были достаточно умны для распознавания Варьироваться заголовка (они не) все еще необходимо спорить с компьютерными швейцарами мира. Существует много умных, талантливых, и выделенных специалистов по ИТ в мире. Существует больше не так умные люди, которые проводят их дни, дважды щелкая по приложениям установщика и думая, что "Интернет" то, что синий E в их меню. Неправильно сконфигурированный прокси мог все еще неправильно страницы кэша и заголовки, оставляя Вас не повезло.
Проблема состоит в том, что необходимо ограничить разметку подмножеством и HTML и XHTML.
<script/>
открыт к text/html
синтаксический анализатор и уничтожит документ до следующего </script>
). text/html
режим (может использовать XML-только функции, упомянутые в предыдущей точке, могут добавить tagname префиксы (PHP DOM иногда делает <default:h1>
). <script>
CDATA в HTML, но сериализатор XML может произвести <script>if (a && b)</script>
). &
в href
, или <br>
полностью повредит XML и заставит сайт появиться к [1 112] работа только в IE! ) я протестировал индексацию своего XML-единственного веб-сайта. Это было индексировано даже при том, что я использовал application/xml
тип MIME, но это, казалось, было проанализировано как HTML так или иначе (Google не индексировал текст, который был в [1 111] разделы).
Поскольку IE не поддерживает xhtml как application/xhtml+xml, единственный способ получить кросс-браузерную поддержку - использовать согласование содержимого. Согласно Web Devout, согласование содержимого затруднено из-за неправильного использования подстановочных знаков, когда веб-браузеры утверждают, что поддерживают все существующие типы содержимого! Safari и Konquer поддерживают xhtml, но только подразумевают эту поддержку с помощью подстановочного знака, в то время как IE не поддерживает его, но тоже подразумевает поддержку.
W3C рекомендует отправлять xhtml только тем браузерам, которые специально заявляют о поддержке в заголовке HTTP Accept, и игнорировать те браузеры, которые специально не заявляют о поддержке. Однако обратите внимание, что заголовки не всегда надежны, и известно, что это может вызвать проблемы с кэшированием. Даже если бы вы смогли заставить это работать, необходимость поддерживать две похожие, но разные версии была бы мучением.
Учитывая все эти проблемы, я за то, чтобы отказаться от xhtml, если, конечно, вам позволяют ваши инструменты и библиотеки.