Как установить правильный заголовок Content-Type для разных браузеров? - PullRequest
2 голосов
/ 08 февраля 2012

Я использую сервер Apache для размещения своих сайтов. Все они написаны на XHTML5, поэтому я ХОЧУ служить им как application/xhtml+xml.

По умолчанию в Apache обслуживать страницы как text/html.

Есть ли конфигурация, которую я могу поместить внизу в моем конфигурационном файле, в которой заголовок ответа Content-Type будет установлен на application/xhtml+xml для браузеров, которые его поддерживают, в противном случае он будет служить text/html (в основном для

1 Ответ

4 голосов
/ 22 марта 2012

mod_setenvif и mod_headers вместе должны сделать это возможным.Я бы предложил установить обычный тип контента для файлов .html на application/xhtml+xml, если вы хотите обслуживать это большую часть времени.

AddType application/xhtml+xml html

Затем сопоставьте клиентов, которых вы хотите обработать специально, и измените контент-Тип:

BrowserMatch some-regex-matching-old-clients is_old_and_crap
Header edit Content-Type application/xhtml\+xml text/html env=is_old_and_crap

В противном случае это тоже должно быть тривиально с mod_rewrite.

RewriteEngine On
RewriteCond %{HTTP:User-Agent} some-regex-matching-old-clients
RewriteRule \.html$ - [T=text/html]

Правило здесь используется для сопоставления запросов на файлы, заканчивающиеся на .html, который не являетсяне идеал.Расширение может появиться до конца (например, foo.html.en.gz или не отображаться вообще (возможно, файлы index.html). Было бы лучше использовать текущее значение Content-Type, но я считаю, что mod_rewrite выполняется слишком рано в цикле запроса дляэто возможно.

...