我在 .htaccess 中有一个重写规则
RewriteRule ^page/(.*)$ my-php-page.php?cid=$1
我正在传递一个包含字符=
的+
编码字符串 - 这是编码字符串;
V1ihnKpip6WpnY7Wm5zn2+6YUtLf2KCh4eKY
当在完整的 URL 中时
http://www.example.com/my-php-page.php?cid=V1ihnKpip6WpnY7Wm5zn2+6YUtLf2KCh4eKY
现在这不起作用,因为+
标志。所以我想发送cid
urlencoded 然后变成;
http://www.example.com/my-php-page.php?cid=V1ihnKpip6WpnY7Wm5zn2%2B6YUtLf2KCh4eKY
符号+
变为。%2B
这很好用,除非我通过 .htaccess 中的 RewriteRule 尝试这个 - 它不起作用。所以网址是
http://www.example.com/page/V1ihnKpip6WpnY7Wm5zn2%2B6YUtLf2KCh4eKY
mypage.php 文件实际上接收到cid
asV1ihnKpip6WpnY7Wm5zn2 6YUtLf2KCh4eKY
由于某种原因替换%2B
为一个空格。
任何想法为什么它可能会这样做?我该如何解决它。非常感谢您的帮助。
编辑
我刚刚找到了这个解决方案——带有 urlencode 和“&”错误的 PHP $_GET var——但我想知道是否有.htaccess
比urlencode
两次输入字符串更优雅的解决方案?