簡體   English   中英

不區分大小寫的重寫規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM