我正在運行Apache服務器來託管我的網站。它們都是用XHTML5編寫的,所以我WANT將它們作爲application/xhtml+xml
。如何爲不同瀏覽器設置正確的Content-Type標頭?
Apache上的默認設置是爲text/html
服務頁面。
是否有一個配置,我可以把在我的配置文件中的底部,將響應報頭Content-Type
設置爲application/xhtml+xml
爲支持它的瀏覽器,否則作爲text/html
(用於< IE9基本上是這樣。)
我正在運行Apache服務器來託管我的網站。它們都是用XHTML5編寫的,所以我WANT將它們作爲application/xhtml+xml
。如何爲不同瀏覽器設置正確的Content-Type標頭?
Apache上的默認設置是爲text/html
服務頁面。
是否有一個配置,我可以把在我的配置文件中的底部,將響應報頭Content-Type
設置爲application/xhtml+xml
爲支持它的瀏覽器,否則作爲text/html
(用於< IE9基本上是這樣。)
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在請求週期中運行得太早,以至於是可以的
我應該注意的是,儘管在這裏嘗試使用標準內容類型是值得稱讚的,但通過基於User-Agent改變標準內容,您有可能會打破http標準。一個'Vary:User-Agent'頭部,如果服務器沒有爲你做。 – noodl 2012-03-21 22:31:59
這是一個支持noodl建議使用RewriteEngine的鏈接:http://www.ibm.com/developerworks/xml/library/x -tipapachexhtml/index.html的 – serans 2012-03-28 17:24:00