apache伪静态中文urlencode重写时403错误解决方法

来源:互联网 发布:矩阵卷积运算 编辑:程序博客网 时间:2024/06/03 21:38
本人最近在开发商城网站,并对url进行了重写,重写后的链接是
在nginx的重写规则是rewrite ^/search-([0-9]+)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-(.*)\.html$ /index.php?app=search&cate_id=$1&keyword=$2&brand=$3&order=$4&show_method=$5&page=$6&approve_num=$7&price=$8 last;

有如下一个链接,我在nginx重写中访问没有问题,但是在Apache下访问就报错
http://local.wksc.com/search-1071-0-%B4%EF%BF%CB%C4%FE-1-2-0-0-0.html
报错是:Access forbidden!
You don't have permission to access the requested object. It is either read-protected or not readable by the server.
但是把链接中的%B4%EF%BF%CB%C4%FE部分替换为数字就可以,
而这(%B4%EF%BF%CB%C4%FE)部分是中文"达克宁"的urlencode结果

据我猜测应该是Apache的url重写不支持中文,这个怎么弄?或者是安全因素?


后来参考了一篇博客找到了答案

Apache rewrite规则中如果遇到中文,相当有可能会出现乱码问题,因为apache在rewrite时会做一次url解码,进行请求转发时,就不会再是编码后的字符串了。此种情况,可以在一开始就进行两次编码(encode),

原创粉丝点击