[英]Case insensitive rewrite rule
因此,我有一個重寫規則,因為網站很舊,所以需要它,並且有一些圖像是從另一個網站鏈接的,問題是我無法手動修復URL,因為有很多圖像。
因此,在將網站托管在Windows上之前,如果要鏈接這樣的圖像沒有問題:
http://www.example.com/Fder69.JPG ,文件名是“ fder69.JPG”,它確實起作用,現在我有了這樣的重寫規則:
RewriteRule ^([^ /。] +。JPG)$ / imgs / $ 1 [L,NC,R = 302]因此,基本上是將舊鏈接重寫為新結構,但有些圖像沒有確切的文件名不工作
有沒有辦法做到這一點? 與諸如CheckSpelling Off
類的東西? 我可以使重寫條件接受.JPG和.jpg,有什么提示嗎?
一種選擇是將所有文件重命名為全小寫,這通常會導致URL更好,然后將任何混合大小寫版本的請求都重定向到所有小寫。
這種方法的優勢在於,每個文件僅以單個URL結尾,而不是使用mod_speling時在多個URL下出現相同的內容。 這對搜索引擎排名尤其有利。
重命名所有文件的一種方法是在shell腳本中生成一堆mv
命令,如下所示:
find . | perl -ne 'chomp; print "mv \"", $_, "\" \"", lc $_, "\"\n";' > rename-files.sh
請注意,我不保證這不會破壞您的所有文件,但我認為這是正確的...
重定向是通過“ RewriteMap”完成的,該函數可以在RewriteRule的右側使用。 可用的內置映射之一是int:tolower
,允許您執行以下操作:
# Alias the mapping function as "lc"
RewriteMap lc int:tolower
# Perform the substitution if the URL contains uppercase letters
RewriteCond %{REQUEST_URI} [A-Z]
# Issue a 301 redirect to the all-lowercase version
RewriteRule /(.*) /${lc:$1} [R=permanent,L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.