具有%代码的URL的Apache RewriteRule

时间:2015-03-27 15:14:00

标签: apache .htaccess

我正在尝试重定向网址,如:

http://www.mywebsite.com/directory/p%3E%20%3Cp%3Efashion/tshirts
http://www.mywebsite.com/directory/p%3E%20somewhere/else

http://www.mywebsite.com/directory

但是,如何告诉我的重写代码查找%代码?

我尝试过打击它:

RewriteRule ^directory/p%3E%20%3Cp%3Efashion/tshirts http://www.mywebsite.com/directory [R,L,NE,NC]

尝试在网址周围添加引号:

RewriteRule ^"directory/p%3E%20%3Cp%3Efashion/tshirts" http://www.mywebsite.com/directory [R,L,NE,NC]

并尝试将未编码的版本进行测试:

RewriteRule ^directory/</p>%20<p>fashion/tshirts http://www.mywebsite.com/directory [R,L,NE,NC]

他们都没有重定向。我只是按预期收到了404.

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你有2个选项来处理这样的网址。

<强> 1。匹配编码的网址(正如您所尝试的那样):

RewriteRule ^directory/p>\s<p>fashion/tshirts /directory [R,L,NC]

或引用:

RewriteRule "^directory/p> <p>fashion/tshirts" /directory [R,L,NC]

唯一的区别是您应该使用\s" "来匹配空格。

<强> 2。使用十六进制代码匹配原始网址(更通用的解决方案):

RewriteRule ^directory/p\x3E\x20\x3Cp\x3Efashion/tshirts /dir [R,L,NC]

如您所见,您需要使用\x3E来匹配3E