redirect 修改 {REQUEST_URI} 以便 php 不获取 urldecoded 信息

redirect modifies {REQUEST_URI} so that php does not get urldecoded information

我有一个 .htaccess 文件可以将 http 请求重定向到 https。当文件处理包含 urlencoded 数据的 link 时,传送到我的 php 脚本的后续数据在使用 $_REQUEST 数组访问时不会获得 urldedoded 数据。这是 .htaccess 代码:

RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

具体来说,输入的字段之一是电子邮件地址,它被编码为 em=someone%40gmail.com,这正是我的 php 脚本从 $_REQUEST["em"] 变量。这应该是解码数据,没有重定向它是正确的,但是在插入重定向之后,数据没有被解码。关于我做错了什么的任何想法?谢谢

尝试在您的规则中使用 NE NoEscape 标志:

RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https: //%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

确保在测试此规则之前清除浏览器缓存。