首页 > 解决方案 > mod_rewrite 标志“NE”对于 %40 (@) 没有按预期工作

问题描述

我有一个规则

RewriteRule ^ "https://foo.bar.tld/?mail=some%40thing.com" [R=302,L]

在 Apache VHost 中。

但是 apache 将其发送为

HTTP/1.1 302 Found
Location: https://foo.bar.tld/?mail=some0thing.com

在回复中。

我已经尝试将 B 和/或 NE 标志用于 RewriteRule - 但没有任何帮助。%40 (@) 总是被“转换”。

重要提示:目标网址只是一个示例。我不能(!)更改目标网址,因为它来自用户配置/设置。因此,更改 url 不是一种选择,因为不是“编码”/转义它,因为我真的不知道 url 中的内容。我只是“知道”它是一个有效的 URI(用 php 中的 filter_var() 检查)。

我可以用 mod_rewrite 的 RewriteRule 做些什么来绕过字符串(url)作为 Location: 标签?没有任何修改?

标签: apacheurl-rewritingmod

解决方案


推荐阅读