Http headers 如何为不同的浏览器设置正确的内容类型标题?
我正在运行一个Apache服务器来托管我的网站。它们都是用XHTML5编写的,所以我希望将它们作为Http headers 如何为不同的浏览器设置正确的内容类型标题?,http-headers,content-type,config,apache,Http Headers,Content Type,Config,Apache,我正在运行一个Apache服务器来托管我的网站。它们都是用XHTML5编写的,所以我希望将它们作为应用程序/xhtml+xml使用 Apache上的默认设置是将页面作为text/html提供 我是否可以在配置文件的底部设置一个配置,将支持响应的浏览器的响应头内容类型设置为application/xhtml+xml,否则作为text/html(基本上是
应用程序/xhtml+xml
使用
Apache上的默认设置是将页面作为text/html
提供
我是否可以在配置文件的底部设置一个配置,将支持响应的浏览器的响应头
内容类型设置为application/xhtml+xml
,否则作为text/html
(基本上是mod_setenif和mod_头的组合应该可以做到这一点。我建议,如果您想在大多数情况下提供.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_重写也应该是微不足道的
RewriteEngine On
RewriteCond %{HTTP:User-Agent} some-regex-matching-old-clients
RewriteRule \.html$ - [T=text/html]
这里的规则用于匹配以.html结尾的文件请求,这并不理想。扩展名可能出现在末尾之前(例如foo.html.en.gz
,或者根本不出现(index.html文件可能)。最好使用内容类型的当前值,但我认为mod_rewrite在请求周期中运行得太早,因此不可能实现。mod_setenif和mod_头的组合应该可以实现这一点。如果您想提供这一功能,我建议将.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_重写也应该是微不足道的
RewriteEngine On
RewriteCond %{HTTP:User-Agent} some-regex-matching-old-clients
RewriteRule \.html$ - [T=text/html]
这里的规则用于匹配以.html结尾的文件的请求,这并不理想。扩展名可能出现在结尾之前(例如foo.html.en.gz
),或者根本不出现(index.html文件可能)。最好使用内容类型的当前值,但我认为mod_rewrite在请求周期中运行得太早,不可能实现。我应该注意,尽管您尝试在此处使用标准内容类型是值得称赞的,但根据用户代理对其进行更改,您稍微违反了http标准。您应该如果服务器不为您做,可能会添加一个Vary:User-Agent
头。下面是一个链接,支持noodl关于使用RewriteEngine的建议:我应该注意,尽管您尝试在这里使用标准内容类型是值得称赞的,但通过根据用户代理对其进行更改,您稍微违反了http标准。您应该如果服务器没有为您执行此操作,ld可能会添加一个Vary:User-Agent
标题。下面是一个链接,支持noodl关于使用重写引擎的建议: