欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-05-14 13:21:06
.htaccess文件 rewriterule ^(.*).html$ index.php?id=$1 对于一个网址//www.jb51.net/我是谁.html 我们将会...
.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.