当前位置

合并网站跳转对应页面的例子

James Qi 在 2018年1月9日 - 10:04 提交

  刚开始用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.手机版等也可以考虑做类似跳转。

自由标签: