htaccess Rewrite中文編碼問題解決方法
2024-07-09 22:40:14
供稿:網友
Seo方面對于中文地址或則文件名,在Google好像比重要大一些,今天正好看到andy的文章.轉下,以后也許會用. .htaccess文件
RewriteRule ^(.*).html$ index.php?id=$1
對于一個網址//www.iis7.com/我是誰.html 我們將會遇到以下4種情況
//www.iis7.com/我是誰.html (這里的”我是誰”是GB2312編碼)
IE打開,接收到的id是utf8編碼的”我是誰”
FireFox打開,接收不到id值,并且Apache會出現403錯誤。
這里需要著重說明一下,因為FireFox會將”我是誰”自動urlencode,如果你的頁面鏈接中”我是誰”的編碼是gb2312就會出錯。
//www.iis7.com/我是誰.html (這里的”我是誰”是UTF8編碼)
IE和FireFox打開,都可以接收到id值
//www.iis7.com/%CE%D2%CA%C7%CB%AD.html (這里是urlencode后的”我是誰”GB2312編碼)
IE和FireFox打開,都接收不到id值,并且Apache會出現403錯誤。
//www.iis7.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.