我的任務是將舊的動態網站從Windows服務器遷移到Linux。該網站最初是寫在不考慮字符的情況下。一些文件名全部是大寫,小寫和一些混合。當然,這在Windows中從來都不是問題,但現在我們正在轉向區分大小寫的文件系統。Apache mod_speling錯誤地「糾正」URL?
一個快速查找/重命名命令(感謝另一個教程)得到的文件名都是小寫的。
但是,代碼中的許多URL引用仍然指向這些混合大小寫的文件名,所以我啓用了mod_speling來解決此問題。它似乎大部分工作正常,除了一個頁面:我有一個文件名haematobium.html
,每次鏈接指向.../haematobium.html
時,它將在瀏覽器中被重寫爲.../hæmatobium.html
。
我不知道這個奇怪的字符是如何進入文件名的,但我已經修正了HTML文檔中的代碼,現在鏈接到haematobium.html
,然後將haematobium.html
文件重命名爲匹配。
當Chrome瀏覽器請求.../haematobium.html
,它「校正」,以.../hæmatobium.html
在地址欄,並顯示錯誤說「所請求的URL .../hæmatobium.html
此服務器上找到。」
在IE9中,我被要求登錄(這是一個.htaccess保護的頁面),我輸入它,然後如果將URL轉發到.../h%C3%A6matobium.html
,這又不會加載。
在我的沮喪中,我甚至將haematobium.html
複製到hæmatobium.html
和hæmatobium.html
,但仍然沒有實際加載這三個頁面。
所以我的問題:我讀了一個地方,mod_speling試圖「學習」拼寫錯誤的網址。它實際上是否重命名文件(是否有奇怪的字符可能來自哪裏)?它是否保留了所要求的緩存,以及它被轉發到的內容(我可以清除的緩存)?
PS。還有許多MySQL數據庫表和字段的混合大小寫引用,但這是一個完整的'噩夢。
你在配置中有'CheckSpelling Off'嗎? – Gabe