所以我有一个重写规则,因为旧站点需要它,并且有一些从另一个网站链接的图像,问题是我无法手动修复 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 右侧的函数。 built-in mappings available之一是 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]
关于linux - 不区分大小写的重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257796/