重定向修改{REQUEST_URI},以便php不会获取urldecoded信息

时间:2018-06-14 07:42:05

标签: php .htaccess urldecode

我有.htaccess文件将http请求重定向到https。当文件处理包含urlencoded数据的链接时,传递到我的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”]变量获得的。这应该是解码数据并且没有重定向它是正确的,但是在插入重定向之后,数据不被解码。关于我做错什么的任何想法?感谢。

1 个答案:

答案 0 :(得分:0)

尝试在规则中使用NE NoEscape标记:

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

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