当前位置: 移动技术网 > 网络运营>服务器>Linux > htaccess Rewrite中文编码问题解决方法

htaccess Rewrite中文编码问题解决方法

2019年05月07日  | 移动技术网网络运营  | 我要评论
.htaccess文件
rewriterule ^(.*).html$ index.php?id=$1
对于一个网址//www.jb51.net/我是谁.html 我们将会遇到以下4种情况
//www.jb51.net/我是谁.html (这里的”我是谁”是gb2312编码)
ie打开,接收到的id是utf8编码的”我是谁”
firefox打开,接收不到id值,并且apache会出现403错误。
这里需要着重说明一下,因为firefox会将”我是谁”自动urlencode,如果你的页面链接中”我是谁”的编码是gb2312就会出错。
//www.jb51.net/我是谁.html (这里的”我是谁”是utf8编码)
ie和firefox打开,都可以接收到id值
//www.jb51.net/%ce%d2%ca%c7%cb%ad.html (这里是urlencode后的”我是谁”gb2312编码)
ie和firefox打开,都接收不到id值,并且apache会出现403错误。
//www.jb51.net/%e6%88%91%e6%98%af%e8%b0%81.html (这里是urlencode后的”我是谁”utf8编码)
ie和firefox打开,都可以接收到id值
说明:
“我是谁”的utf8编码urlencode后为 %e6%88%91%e6%98%af%e8%b0%81
“我是谁”的gb2312编码urlencode后为 %ce%d2%ca%c7%cb%ad
结论:
rewrite只接收utf8
ie和firefox对中文url的编码不同,要注意.
这也是为什么上面的例子接收不到id值,并且出403错误.
为了避免这种情况出现,页面中的链接最好是utf8编码的,如果是gb2312,一定会有问题.
最好的习惯是utf8编码并urlencode,也就是上文的例4.

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网