刚开始用Drupal网站的时候对于多语言站点不是很了解,10种语言就单独做了10个站点(邮编库的10种外文中国邮编站点),导致数据库庞大、维护麻烦,后来我们又做了一个新版邮编库,一套数据库可以增加50种外文版本。
因为中国邮编有180万数据,生成的页面数量众多、各种查询消耗数据库资源大,被各种爬虫大量抓取的时候常常导致MySQL性能问题。在Drupal 6升级到Drupal 7的过程中考虑过放弃这个系列,重定向到新版邮编库,但当时没有下这个决心,还是花了不少时间精力去实施了升级。
今年开年大力开展关停并转工作,为其他项目发展腾出时间精力和服务器资源,就再次下决心来把这10个站点合并、跳转到新版邮编库的对应语言版本中,特别是多种不同网址去做了专门对应,这几天做了这个工作,记录如下:
一、对应页面做301重定向跳转,将多种网址列出对应:
页面类型 | 新版邮编库对应网址 | chn系列10种语言对应网址 | m.手机版 |
省份 | province/河北省-0(内容类型) province/河北省(分类) |
province/河北省(内容类型) |
|
地市 | city/保定市-0(内容类型) city/保定市(分类) |
city/保定市(内容类型) |
|
区县 | district/河北省保定市安新县(内容类型) district/安新县(分类) |
county/河北省保定市新安县(内容类型) |
|
地区 | area/河北省保定市新安县-0(内容类型) area/河北省保定市新安县(分类) |
area/河北省保定市安新县(Views) category/河北省保定市安新县(分类) |
|
邮编 | postcode/161141-0(内容类型) postcode/161141(分类) postcode/430000(分类) |
postcode/161141(Views) category/161141(分类) postcode_county/430000(Views) |
|
地址 | address/河北省保定市安新县赵北口镇赵庄子(内容类型) | address/河北省保定市安新县赵北口镇赵庄子(内容类型) | |
单页 | city(Views) province(Views) postcode(Views) |
city(Views) 省份(页面) 邮编(页面) |
在chn系列的.htaccess中写重定向:
RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/(province|city|area|postcode)\/(.*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/%1/%2-0 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/(address)\/(.*)_\d+$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/%1/%2 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/(address)\/(.*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/%1/%2 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/county\/(.*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/district/%1 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/postcode_county\/(.*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/postcode/%1 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/category\/(\d*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/postcode/%1 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/category\/([^\d]*)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/area/%1 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/(city)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/%1 [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/page\/.*_\(省份)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/province [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/page\/.*_\(邮编)$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/postcode [R=301,L] RewriteCond %{HTTP_HOST} ^ar\.chn\.youbianku\.com$ RewriteCond %{REQUEST_URI} ^\/$ RewriteRule ^(.*)$ https://www.youbianku.cn/ar/ [R=301,L]
这是ar一种语言站点的跳转,其它语言没有合并一起写,而是又单独复制、修改了几套;
二、因为有些老页面在新站中没有对应的内容,会导致跳转过来遇到404错误,我在新站中设置了404专门页面,里面嵌入PHP进行判断,如果符合一定条件,就跳转到新站首页,避免大量浏览者看到报错;
三、虽然做了跳转,但链接到老网站的网址还是尽量改为到新站的网址,在邮编库Wiki站中修改了Interwiki表、修改了很多模板中的站间链接。
先记录到这里,观察一段看看。后面还有m.手机版等也可以考虑做类似跳转。
评论