您在這裡

合并網站跳轉對應頁面的例子

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.手機版等也可以考慮做類似跳轉。

自由标簽:

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。