华域联盟 Linux htaccess Rewrite中文编码问题解决方法

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

.htaccess文件

RewriteRule ^(.*).html$ index.php?id=$1

对于一个网址https://www.cnhackhy.com/我是谁.html 我们将会遇到以下4种情况

https://www.cnhackhy.com/我是谁.html (这里的”我是谁”是GB2312编码)

IE打开,接收到的id是utf8编码的”我是谁”

FireFox打开,接收不到id值,并且Apache会出现403错误。

这里需要着重说明一下,因为FireFox会将”我是谁”自动urlencode,如果你的页面链接中”我是谁”的编码是gb2312就会出错。

https://www.cnhackhy.com/我是谁.html (这里的”我是谁”是UTF8编码)

IE和FireFox打开,都可以接收到id值

https://www.cnhackhy.com/%CE%D2%CA%C7%CB%AD.html (这里是urlencode后的”我是谁”GB2312编码)

IE和FireFox打开,都接收不到id值,并且Apache会出现403错误。

https://www.cnhackhy.com/%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.
您可能感兴趣的文章:

本文由 华域联盟 原创撰写:华域联盟 » htaccess Rewrite中文编码问题解决方法

转载请保留出处和原文链接:https://www.cnhackhy.com/43458.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部