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

本人最近在开发商城网站,并对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),

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值