所以我有一个重写规则,因为旧网站需要它,并且有一些图像是从另一个网站链接的,问题是我可以'手动修复网址,因为有很多图像。
所以在网站托管在Windows之前,如果你想链接这样的图像没有问题:
http://www.example.com/Fder69.JPG,文件名是“fder69.JPG”它确实有效,现在我有一个像这样的重写规则:
RewriteRule ^([^ /。] + .JPG)$ / imgs / $ 1 [L,NC,R = 302]因此基本上重写旧链接到新结构,但是一些没有的图像确切的文件名不起作用。
有没有办法实现这个目标?像CheckSpelling Off
或?我可以让重写cond接受.JPG和.jpg,任何提示吗?
答案 0 :(得分:0)
一个选项是将所有文件重命名为全小写,这通常会导致更好的URL,然后将任何混合大小写版本的请求重定向到全部小写。
这种方法的优势在于,每个文件最终只有一个网址,而不是在使用mod_speling的情况下出现在多个网址下的相同内容。这对搜索引擎排名很有帮助。
重命名所有文件的一种方法是在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]