2012-11-30 41 views
2

在一個網站上有文件夾products/,裏面有一些大寫字母的php文件。htaccess大寫的URL爲小寫

例子:www.example.com/products/BIT-Defendar.php

現在多年,各地的搜索引擎存在這個網址。這是產品經理的錯誤。

但我想解決這個問題,我只想要小寫的URL。

這會解決我的問題嗎? CheckSpelling OnCheckCaseOnly On(1)

而且什麼不同與上述和:(2)

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1} 

如果使用(1)然後所有作品枯萎我請求URL下套管或大寫的(但我有搜索引擎的問題?)

如果我使用(2)我必須將產品/文件夾內的所有文件重命名爲小寫。

---- ----編輯

當我使用RewriteRule我得到轉移到域根URL是否是大寫的,如果我使用CheckSpellingCheckCaseOnly然後所有罰款。

我已經測試this和我得到:

RewriteCond %{REQUEST_URI} [A-Z]  

- 這個條件滿足

RewriteRule (.*) ${tolowercase:$1} [R=301,L]  

- 這條規則被滿足,則新URL http://www.example.com/ $ { tolowercase:products/BIT-Defendar.php}

- 由於RewriteRule選項中的R,測試已停止。一個重定向將與狀態代碼進行301

我的設置在httpd.conf

<VirtualHost *:80> 
RewriteMap tolowercase int:tolower 
</VirtualHost> 
+0

您可能需要將用戶重定向到小寫URL而不是重寫。搜索引擎可以看到重定向,而不是重寫。 –

+0

當我使用* RewriteRule *我得到轉移到域根目錄如果url被超載,如果我使用* CheckSpelling *和* CheckCaseOnly *然後一切正常。 – FeRtoll

回答

3

使用CheckSpelling和/或CheckCaseOnly指令可能導致意外的結果,因爲在底部here提到:

1, performance issues 
2, some files might be skipped 
3, some files might be misinterpreted 

我認爲這是不明智的,允許apache爲你做出更正,因爲你依靠apache來搜索目錄和文件f或者每一次查找,而使用小寫地圖,它使您完全控制,並創建嚴格的標準。

我會建議增加一個標誌[R=301],它將通知搜索引擎,這是新的文件,你不會有任何搜索引擎相關的問題:

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L] 

你將不得不重命名文件,因爲它們將不再被識別,但您可以編寫一個簡單的腳本來掃描所有文件,並將它們重命名爲小寫。

+0

這不是我的問題。請閱讀我的問題。 – FeRtoll

+0

我不明白你指的是什麼*不希望的結果。如果你認爲它提到了* DAV啓用的目錄*我不使用它。 – FeRtoll

+0

根據列出的3點不希望的結果。 –