Apache2重写查询字符串转义两次

Posted

技术标签:

【中文标题】Apache2重写查询字符串转义两次【英文标题】:Apache2 rewrite with query string escaped twice 【发布时间】:2011-09-10 05:28:39 【问题描述】:

在虚拟主机配置文件中使用此规则会导致查询参数的双重转义:

RewriteEngine On
RewriteCond %HTTPS off
RewriteRule (.*) https://%HTTP_HOST%REQUEST_URI

例如:

http://example.com?f=hello%20world

导致

https://example.com?f=hello%2520world

注意转义“%”符号的“%25”。为什么会这样?

【问题讨论】:

【参考方案1】:

尝试在重写规则末尾添加[NE](noescape)标签:

RewriteRule (.*) https://%HTTP_HOST%REQUEST_URI [NE]

发生这种情况是因为&? 以及其他一些在重写过程中默认被转义。

【讨论】:

以上是关于Apache2重写查询字符串转义两次的主要内容,如果未能解决你的问题,请参考以下文章

httpd配置文件中重写函数Rewrite

安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会

Pyodbc 查询字符串引号转义

HTTP 查询字符串中必须转义哪些字符?

HTTP 查询字符串中必须转义哪些字符?

需要在 .htaccess 重写规则中转义 # (hash/pound) 字符