2012-02-08 50 views
2

我正在運行Apache服務器來託管我的網站。它們都是用XHTML5編寫的,所以我WANT將它們作爲application/xhtml+xml如何爲不同瀏覽器設置正確的Content-Type標頭?

Apache上的默認設置是爲text/html服務頁面。

是否有一個配置,我可以把在我的配置文件中的底部,將響應報頭Content-Type設置爲application/xhtml+xml爲支持它的瀏覽器,否則作爲text/html(用於< IE9基本上是這樣。)

回答

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在請求週期中運行得太早,以至於是可以的

+3

我應該注意的是,儘管在這裏嘗試使用標準內容類型是值得稱讚的,但通過基於User-Agent改變標準內容,您有可能會打破http標準。一個'Vary:User-Agent'頭部,如果服務器沒有爲你做。 – noodl 2012-03-21 22:31:59

+0

這是一個支持noodl建議使用RewriteEngine的鏈接:http://www.ibm.com/developerworks/xml/library/x -tipapachexhtml/index.html的 – serans 2012-03-28 17:24:00

相關問題