我想對於是否存在這些文件不觸及現有的文件,這樣做對其他可能的情況下,查找和發現任何URL,如果是這樣,302給他們。不區分大小寫的網址與mod_rewrite的
如果這是不可能的,那麼我確定這些妥協:
- 只檢查小寫版本
- 只檢查第一路部分
例如http://example.com/CoOl/PaTH/CaMELcaSE應該重定向到http://example.com/cool/path/camelCase(假設後者存在)。
但當然,一個完整的解決方案是更爲有用的我和其他人
我想對於是否存在這些文件不觸及現有的文件,這樣做對其他可能的情況下,查找和發現任何URL,如果是這樣,302給他們。不區分大小寫的網址與mod_rewrite的
如果這是不可能的,那麼我確定這些妥協:
例如http://example.com/CoOl/PaTH/CaMELcaSE應該重定向到http://example.com/cool/path/camelCase(假設後者存在)。
但當然,一個完整的解決方案是更爲有用的我和其他人
CheckSpelling on
匹配文件和目錄。有關詳細信息,請參閱documentation。
最近的版本是否有相應的版本? – icedwater 2013-10-04 04:23:49
@icedwater它仍然在工作。 – fuxia 2013-10-04 05:22:41
似乎沒有這樣的方式;我在Ubuntu $ 12.04 LTS,Apache 2.2.22中創建符號鏈接,並且在'$ APACHE/mods-enabled /'中創建了speling.load和speling.conf的符號鏈接,但似乎不允許出現錯誤大小寫的文件夾名稱。 (當然,speling.load和speling.conf被設置...也許我應該發表另一個問題。) – icedwater 2013-10-04 07:47:24
中查找Apache模塊mod_negotiation模塊。它正是你想要的: http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews
你也可以管理所有的請求到一個PHP文件,並讓PHP文件爲你做檢查。
這已經很接近,但似乎主要是用於添加擴展。就像'foo'的請求變成'foo.xml'或'foo.html'一樣。我正在嘗試修復拼寫錯誤。 – 2010-02-02 07:03:48
我沒有Apache的方便測試,但這些規則的某種組合應該做你想要什麼:
RewriteEngine on RewriteMap lower int:tolower RewriteCond ${lower:%{REQUEST_URI}} -U RewriteRule [A-Z] ${lower:%{REQUEST_URI}} [R=302,L]
我不知道RewriteMap是否可以在條件中應用,或者它只適用於規則。這些基於experts exchange accepted answer和a small orange forum discussion。
你的「理想」的解決方案可能是不可能的,除非你能列舉您網站上的每一個有效的網頁。如果您只有幾個有效頁面,則RewriteMap和文本地圖的組合將完全符合您的需求。如果有數百/數千頁,則可能需要編寫腳本並使用prg
指令。
如果你不能確定每一個有效的頁面,你就需要嘗試的情況下,每一個變種。將URL看作二進制字符串,其中0代表小寫字母,1代表大寫字母。從你的簡單例子中,你將不得不測試2^17變化,128k頁。
我寧願使用一個301比302 – Gumbo 2010-01-04 08:23:45