如何重写以"%22http://"?开头的损坏的URL路径?

时间:2016-02-10 20:03:00

标签: .htaccess redirect url-redirection

我收到了破坏网址的请求,例如:

http://www.example.com/%22http:/www.example.com/how-to-keep-your-teeth-free-of-stains.html

我想重定向到:

http://www.example.com/how-to-keep-your-teeth-free-of-stains.html

在.htaccess文件中使用Apache mod_rewrite。我尝试了几种方法,但我无法获取我的RewriteRule以匹配损坏的网址。这有可能吗?如果是的话,怎么样?

1 个答案:

答案 0 :(得分:0)

当然可以,例如像这样:

RewriteEngine On
RewriteBase /

RewriteRule ^"http:/+www\.example\.com/(.*) http://www.example.com/$1 [L,NS,R=301]

请注意,Apache会自动将%22解码为双引号("),以便您在RewriteRule中匹配所需的内容。此外,浏览器和/或Apache会自动将"http://中的双斜杠标准化为单斜杠,然后mod_rewrite会看到它。在上面的规则中,我使用/+来确保正则表达式匹配任意数量的连续斜杠(大于零)。

那就是说,你真的应该(也)修复破坏的HTML代码,这些代码首先会导致这些错位的URL被请求。