使用 mod_rewrite 将 URL 中的 %23 替换为#

Replacing %23 in URL with # using mod_rewrite

我在 tomcat 中有一个 GWT 应用程序在 linux 上的 apache 后面。这使用从 URL 传递的参数维护来自 URL 的入站状态。参见示例:

https://www.example.com/#anchor1?param1=foo&param2=bar

我使用第三方警报包将 URL 推送到客户端,但在此过程中它将 URL 编码为

https://www.example.com/%23anchor1?param1=foo&param2=bar

这意味着我收到 404 错误。

我到处寻找解决方案,但没有一个明确可行的答案。

据我所知,我需要一个简单的规则,将 URL 中所有出现的 %23 替换为 #,但似乎没有就可行的东西达成明确的共识(相信我,我什么都试过了)。

执行此操作的 mod_rewrite 规则是什么?

提前致谢。

当mod_rewrite看到它时,#已被解码。普通 # 永远不会发送到服务器,所以它很简单:

RewriteRule ^(.*#.*) / [R,NE]

我假设浏览器需要# 之后的内容,因此您必须重定向。 "NE" 阻止 # 在输出时被编码。