2012-04-03 51 views
15

我试图在目标包含片段标识符部分的情况下发出重定向。 我试图与这条规则:对包含散列标记的目标的Apache重写规则

RewriteRule ^/foo/bar/([^/]+)/(.*)$ /cgi/script#foobar::$1.$2 [R,L] 

然而#转化为%23和Web应用程序不能正确地分析这个网址。我如何强制apache保持#角色?发现

回答

28

解决方法:有不与mod_rewrite的逸出网址选项:

https://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_ne

添加[NE]标志解决了这个问题。

+0

有没有办法*不追加查询字符串?使用这种方法,我得到'/ myUrl?123'重定向到'/ newUrl#hash?123'。我知道有'QSA'的标志,但我需要找到相反的。 – 2016-02-03 00:06:09

+1

@SimonEast你在Apache 2.4上有'QSD'标志。或者在'RewriteRule'替换的末尾添加一个'?'。 – MrWhite 2016-09-19 08:56:31

+0

太棒了,谢谢@ w3dk – 2016-09-20 01:47:33