我正在运行Apache服务器来托管我的网站。它们都是用XHTML5编写的,所以我想要将它们作为application/xhtml+xml
提供。
Apache上的默认设置是将页面作为text/html
提供。
我是否可以在配置文件的底部放置一个配置,为支持它的浏览器设置响应标头Content-Type
为application/xhtml+xml
,否则将用作text/html
(基本上是< IE9。)
答案 0 :(得分:4)
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在请求中运行得太早为此而循环。