如何将htaccess重写规则应用于包含换行符(%0A)的URL?

我遇到了包含以下格式的转义换行符的错误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]