Rewrite编码问题解决

本文探讨了在Seo方面中文URL使用UTF8编码的重要性,特别是在Google搜索引擎中的表现。通过对比GB2312和UTF8编码下的不同浏览器行为,揭示了正确编码对于避免403错误及确保链接正常解析的关键作用。

Seo方面对于中文地址或则文件名,在Google好像比重要大一些,今天正好看到andy的文章.转下,以后也许会用.

.htaccess文件

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

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

http://www.21andy.com/我是谁.html (这里的”我是谁”是GB2312编码)
IE打开,接收到的id是utf8编码的”我是谁”
FireFox打开,接收不到id值,并且Apache会出现403错误。
这里需要着重说明一下,因为FireFox会将”我是谁”自动urlencode,如果你的页面链接中”我是谁”的编码是gb2312就会出错。 http://www.21andy.com/我是谁.html (这里的”我是谁”是UTF8编码)
IE和FireFox打开,都可以接收到id值 http://www.21andy.com/%CE%D2%CA%C7%CB%AD.html (这里是urlencode后的”我是谁”GB2312编码)
IE和FireFox打开,都接收不到id值,并且Apache会出现403错误。 http://www.21andy.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.

转载于:https://www.cnblogs.com/fgpgy/archive/2008/05/28/3000148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值