Tag Archives: rewrite

小心对待rewrite中邪恶的百分号(%)

今天遇到一个非常诡异的问题。

我目前是采用 /key1/value1/key2/value2 方式传递参数,非常干净明了。但是今天我试图传递一个urlencode过的字符串时发现,只要URI里带有百分号%,就会导致Apache服务器400错误,警告说“错误的请求”。

/key1/value1/key2/value_with_%_symbol    400 error

/key1/value1/key2/value_without_symbol    200 OK

查阅手册后,发现%是rewrite语法中的特殊字符,会认为是一个变量的开始,就像PHP中的美元符号$。

经测试,很多知名站点也没有解决这个问题,如WP,discuz,osnews等等。

目前找到一个解决方案,但情况有点不太一样,所以也没有测试成功。链接地址:http://stackoverflow.com/questions/734654/modrewrite-doesnt-work-for-a-url-beginning-in-percent-sign

临时解决方案:/key1/value2/?key2=evil_value2 即换回传统的方式来解决问题。

特留此文,以后找到方案时更新。