Linux

將具有不良做法的 Windows 文件遷移到區分大小寫的 Linux 伺服器

  • February 5, 2019

我正在將所有數據從舊的 Windows FTP 伺服器遷移到 Linux 環境,並且遇到了一些問題。

以前上傳文件(通常是簡單的 html 文件和圖像)的人正在遵循非常糟糕的做法,即在文件夾和文件名中將某些字元大寫,然後在 html 程式碼中輸入大小寫不正確的文件名。他們還以全小寫形式發送指向這些文件的超連結。由於伺服器是 Windows,並且不區分大小寫,因此它只是原諒了這一點,無論如何一切都會正常執行。

現在文件已遷移到區分大小寫的文件系統。這些超連結已損壞,編碼不當的 HTML 文件將無法工作。

我一直在玩弄幾種解決方案。現在我的計劃是使用 .htaccess 使所有請求不區分大小寫,但我想確保我正在考慮這可能產生的任何不利影響。我知道它可能會對動態生成的頁面或連結產生嚴重影響,但由於這只是一個簡單的登台伺服器,而且我們只使用它來顯示範例文件,所以無論如何我們都不會這樣做。

這也會影響html程式碼中的href標籤嗎?還有其他一些我可能沒有想到的嚴重後果嗎?

我只是想把其他一些意見和選擇放在一起。有沒有更好的方法來解決這個問題?

多謝你們!

我對 Apache 的mod_speling提供的拼寫更正非常幸運,它的優點是您不必修改現有的文件/目錄名稱,也不必修改現有的 HTML 程式碼,但您的里程可能會有所不同:

它通過將請求目錄中的每個文件名稱與請求的文件名稱進行比較來完成其工作,而不考慮大小寫,並且(可選)允許最多一個拼寫錯誤(字元插入/省略/換位或錯誤字元)。使用此策略匹配的所有文件名稱建構一個列表。

如果在掃描目錄後,

  • 沒有找到匹配的文件,Apache 將照常進行並返回“找不到文件”錯誤。
  • 只找到一個“幾乎”匹配請求的文件,然後以重定向響應的形式返回。
  • 找到多個具有緊密匹配的文件,然後將匹配列表返回給客戶端,客戶端可以選擇正確的候選者。

通過設置啟用:

CheckSpelling On 

在您的 httpd.conf 中的 VirtualHost 和/或 Directory 塊(甚至是 .htaccess 文件)中。

您只能通過以下方式將拼寫更正限制為小寫/大寫更改:

CheckCaseOnly On 

引用自:https://serverfault.com/questions/952239