2

我在 .htaccess 文件中有以下代码行:

RewriteRule ^mypage/(.+)/$ mypage.php?a=$1

这种重写大部分时间都有效。但是,如果我尝试传递一个类似的参数C++mypage/C%2B%2B/那么它将无法正常工作。它应该去mypage.php?a=C%2B%2B......但它看起来像这样mypage.php?a=c++,所以 PHP 代码看到了a=c<space><space>

如何更新 RewriteRule 以将十六进制编码传递给重写的 url?

先感谢您

4

2 回答 2

1

诀窍是使用Bflag。根据手册:

[B] 标志指示 RewriteRule 在应用转换之前转义非字母数字字符。

在 doc 中阅读有关它的更多信息

您修改后的规则应如下所示:

RewriteRule ^mypage/(.+?)/?$ mypage.php?a=$1 [L,QSA,NC,B]
于 2013-07-11T11:34:45.463 回答
0

经过大量搜索,我在另一个 StackOverflow 帖子中找到了答案: 如何使用 mod_rewrite 和 Apache 编码特殊字符?

谢谢您的帮助。

于 2013-07-11T11:21:25.600 回答