最近測試一個遊戲項目的資源檔案,發現一個apache忽略檔案字尾導緻的問題
可以通路 http://10.0.0.18/logXML/ini78
可以通路 http://10.0.0.18/logXML/ini78.xml
不能通路 http://10.0.0.16/logXML/ini78
可以通路 http://10.0.0.16/logXML/ini78.xml
經過查找發現是這個 Options Indexes FollowSymLinks MultiViews 導緻的
Multiviews
MultiViews是一個針對每個目錄的選項,也就是說可以在httpd.conf或.htaccess(如果正确設定了AllowOverride)檔案中的<Directory>、<Location>、<Files>配置段中,用Options指令來指定。注意,Options All 并不會設定MultiViews ,你必須明确地指定。
MultiViews的效果是:如果伺服器收到對/some/dir/foo的請求,而/some/dir/foo并不存在,但是如果/some/dir啟用了MultiViews ,則伺服器會查找這個目錄下所有的foo.* 檔案,并有效地僞造一個說明這些foo.* 檔案的類型表,配置設定給他們相同的媒體類型及内容編碼,并選擇其中最合适的比對傳回給客戶。
MultiViews還可以在伺服器檢索一個目錄時,用于DirectoryIndex指令搜尋的檔案名。如果設定了:
DirectoryIndex index
而index.html和index.html3并存,則伺服器會作一個權衡;如果都沒有,但是有index.cgi ,則伺服器會執行它。
如果一個目錄中沒有任何檔案具有mod_mime可以識别的表示其字元集、内容類型、語言和編碼的字尾,那麼其結果将取決于MultiViewsMatch指令的設定,這個指令決定了在MultiViews協商中将使用的處理器、過濾器和其他字尾類型。
本文轉自 ppabc 51CTO部落格,原文連結:http://blog.51cto.com/ppabc/1051682