包含哈希标记的目标的Apache重写规则

asc*_*bol 18 apache mod-rewrite fragment-identifier

我正在尝试发出一个重定向,其中目标包含片段标识符部分.我试过这个规则:

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

但是#转换为%23并且Web应用程序无法正确解析此URL.如何强制apache保留#角色?

asc*_*bol 34

找到解决方案:有一个选项可以使用mod_rewrite不转义URL:

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

添加[NE]标志解决了问题.

  • @SimonEast 你在 Apache 2.4 上有“QSD”标志。或者简单地在“RewriteRule”替换的末尾附加一个“?”。 (2认同)