我遇到了包含以下格式的转义换行符的错误url:
http://domain.com/%0Apath/to/file.txt
但是,即使我尝试了全球最重写可能…
RewriteRule ^.*$ /path/to/file.txt [R=301,L]
… Apache仍然抛出一个404:
The requested URL / path/to/file.txt was not found on this server. (Note the space.)
我怎样才能优雅地拦截这些错误的URL并将它们发送到正确的目的地?
我有同样的问题。 我在sarumont的回答帮助下解决了这个问题。
网站管理员工具中的示例网址:
/dummy-url/dummy-%0A%0Afull-version-download
重写我在Apache配置中添加的规则:
RewriteRule ^/dummy-url/dummy-[\n\r]+full-version-download$ /dummy-url/dummy-full-version-download [L,R=301]
^.*$
不会跨越换行。 尝试一个普通的.*
。 或者,尝试匹配换行符: [\r\n]
。
这是一个非常古老的问题,但我认为没有一个答案是正确的,所以张贴答案:
用这个替换你的规则:
RewriteRule .* /path/to/file.txt [R=301,L]
添加\s
重写规则应该修复它。
RewriteRule ^\s.*$ /path/to/file.txt [R=301,L]
更具体地说,作为一个全面的
RewriteRule ^\s(.*)$ http://www.example.com/$1 [R=301,L]