2013-09-24 198 views
2

我有这个URL(url编码两次):阿帕奇重写规则重定向与URL编码

http%253A%252F%252Fwww.google.cl%252F%2523test (translated: http://www.google.cl/#test) 

而这个重写规则:

RewriteRule /linkto/(.*?)/ ${unesc:$1} [R,L] 

,如果我把这个网址在浏览器:

http://localhost/linkto/http%253A%252F%252Fwww.google.cl%252F%2523test/data/ 

Apache重定向到http://www.google.cl/%23test而不是http://www.google.cl/#test

问题产生的原因只有#(数字符号)。

任何想法?

回答

4

你可以尝试NE标志:

RewriteRule ^/?linkto/(.*?)/ ${unesc:$1} [R,L,NE,NC] 
+0

这工作得更好......但重定向到:HTTP://本地主机/ HTTP://www.google.cl/#test而不是http:// www.google.cl/#test –

+0

啊确定引导斜杠问题。现在编辑代码。 – anubhava

+0

解决使用这样的重写:RewriteRule ^/linkto /(.*?)/ $ {unesc:$ 1} [R,L,NE,NC]谢谢! –