假设我的服务器上有一个名为FILE%20NAME[1].png
的文件。
浏览器请求FILE%20NAME%5B1%5D.png
,转义方括号,Apache解释为FILE NAME[1].png
,当然找不到。
我知道我应该重命名该文件,但是如何在.htaccess中编写快速修复的重定向规则? 我试过了
RewriteRule ^folder/FILE\sNAME\[1\].png /folder/FILE\%20NAME\[1\].png [R=301,QSA,L,NE]
导致无限循环,因为重写的文件名仍然符合规则。
答案 0 :(得分:2)
RewriteRule ^folder/FILE\sNAME\[1\].png /folder/FILE\%2520NAME\[1\].png [R=301,QSA,L,NE]
答案 1 :(得分:1)
答案 2 :(得分:1)
你误解了问题 - 问题不在于括号被转义。在文件系统上发送以获取名为“FILE%20NAME [1] .png”的文件的正确请求将是URL中的“FILE%2520NAME%5B1%5D.png”。
如果您刚刚使用了Alias
或非重定向RewriteRule
,则循环就没有问题。
我很确定如果你照顾我在问题1中所说的内容,那么循环也不会有问题,因为当你发回适当的重定向目标时,那么新的请求网址将包含%2520
(已解码:%20
),\s
无法匹配,因此该规则不适用。