我收到了破坏网址的请求,例如:
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以匹配损坏的网址。这有可能吗?如果是的话,怎么样?
答案 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被请求。