由于linux 上面不认中文目录。所以采用重定向的方式来改变路径,这下有问题了。
下面是.htaccess重写规则
RewriteEngine on
RewriteBase /
RewriteRule ^帮助中心(.*)$ /help$1 [L,R=301]
RewriteRule ^程序外包(.*)$ /soft$1 [L,R=301]
RewriteRule ^仿站建设(.*)$ /fangzhan$1 [L,R=301]
RewriteRule ^付款方式(.*)$ /pay$1 [L,R=301]
RewriteRule ^公司新闻(.*)$ /news$1 [L,R=301]
RewriteRule ^公司业务(.*)$ /business$1 [L,R=301]
RewriteRule ^管理软件(.*)$ /oasoft$1 [L,R=301]
RewriteRule ^合同下载(.*)$ /htxz$1 [L,R=301]
RewriteRule ^技术文档(.*)$ /code$1 [L,R=301]
RewriteRule ^技术文档/使用技巧(.*)$ /code/jq$1 [L,R=301]
RewriteRule ^加盟合作(.*)$ /jmhz$1 [L,R=301]
RewriteRule ^联系我们(.*)$ /lx$1 [L,R=301]
RewriteRule ^模板开发(.*)$ /template$1 [L,R=301]
RewriteRule ^网站安装(.*)$ /setup$1 [L,R=301]
RewriteRule ^网站公告(.*)$ /g$1 [L,R=301]
RewriteRule ^网站优化(.*)$ /seo$1 [L,R=301]
RewriteRule ^招聘英才(.*)$ /job$1 [L,R=301]
这样输入 http://www.server110.com/技术文档/ 会自动转到 http://www.server110.com/code/ IE 6 Firefox 都支持。
在百度中搜索原来网站收录的页面 site:www.server110.com
点其中一个发现不能打开。
右击查看源码,http://www.server110.com/%BC%BC%CA%F5%CE%C4%B5%B5/java/184.html
而google 中是:
http://www.server110.com/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/java/53.html
很明显百度中是gbk 编码 而 google 中是utf-8编码
这下重写规则就有了问题,来自google的可以正确被转向,而百度的会报404找不到页面,考虑到本站流量多来自百度。就不能这样设置。
RewriteRule 还有一个选项目是 NE 表示不对url进行解码
RewriteRule ^技术文档(.*)$ /code$1 [L,R=301,NE]
这样写百度就能打开并转向到新页面。
最后解决方法是这样的,先生成的中文html全部用ftp 传到服务器上,保证百度原来的链接都可以正常打开。
重写模式,以标准的utf-8方式设置,让百度自己去抓吧,等百度把页面变回来,我在把这些文件删除。
以后最好不要用中文URL 除非你在windows下面用。