Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http headers 如何为不同的浏览器设置正确的内容类型标题?_Http Headers_Content Type_Config_Apache - Fatal编程技术网

Http headers 如何为不同的浏览器设置正确的内容类型标题?

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(基本上是

我正在运行一个Apache服务器来托管我的网站。它们都是用XHTML5编写的,所以我希望将它们作为
应用程序/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关于使用重写引擎的建议: