解决飞飞系统的伪静态搜索中文乱码

作者: 蓝鹰 分类: 杂类其它 发布时间: 2013-11-27 18:28 ė173 浏览数 6解决飞飞系统的伪静态搜索中文乱码已关闭评论

最近帮朋友解决一个URL错误的问题,这问题也是我第一次碰到:搜索中文关键词时,网站出现乱码,不显示结果。

朋友的网站是个电影站,飞飞cms,系统不错。我猜测了2种想法,1、数据库编码与网站模版编码。2、程序内核有问题。

这2个问题一一排查后,没问题。

开始猜想rewrite的问题(后来证实的确是rewrite版本的问题。)

在用 ISAPI_Rewrite 1.3 版的时,只要程序对URL进行 UrlEncode 处理,就可以正常接收到中文。

但是如果换为 3.1版以后 GB2312 的接收页面就是乱码了。

换用了 ISAPI_Rewrite 3.x 发现编码后的字符会变成乱码,如果直接使用中文不编码,则会被格式化为GBK字符串。

在RewriteRule 规则中添加 NU 即可恢复正常。

关于ISAPI_Rewrite中文变乱码解决方法如下:

1、在传输URL时,将中文进行urlencode,这样是没错的。

2、如果是ISAPI_Rewrite 3.x 只需添加 NU 参数即可。

参考代码:

# 将 RewriteEngine 模式打开
RewriteEngine On
# 安装目录路径
RewriteBase /
# Rewrite 系统规则请勿修改
RewriteRule ^vod-(.*)$ index.php\?s=/Home-vod-$1 [QSA,NU,PT,L]
RewriteRule ^news-(.*)$ index.php\?s=/Home-news-$1 [QSA,NU,PT,L]
RewriteRule ^special-(.*)$ index.php\?s=/Home-special-$1 [QSA,NU,PT,L]
RewriteRule ^tag-(.*)$ index.php\?s=/Home-tag-$1 [QSA,NU,PT,L]
RewriteRule ^gb-(.*)$ index.php\?s=/Home-gb-$1 [QSA,NU,PT,L]
RewriteRule ^cm-(.*)$ index.php\?s=/Home-cm-$1 [QSA,NU,PT,L]
RewriteRule ^map-(.*)$ index.php\?s=/Home-map-$1 [QSA,NU,PT,L]
RewriteRule ^my-(.*)$ index.php\?s=/Home-my-$1 [QSA,NU,PT,L]

在飞飞系统的伪静态规则后面都加上[QSA,NU,PT,L] 即可解决乱码问题。

本文出自 蓝鹰博客,转载时请注明出处及相应链接。

本文永久链接: http://www.lanyingblog.com/blog/1522.html

Ɣ回顶部