您在這裡

Drupal中添加大量301重定向頁面的批量辦法

James Qi 在 2019年5月14日 - 23:47 發表

301重定向

  最近同事在整理電話号碼庫數據的時候,發現省市區幾級數據有很多不規範的地方,造成簡稱全稱重疊、省市區級别錯亂等問題,後來找到标準的行政劃分名稱,在數據庫進行了批量替換,但以前存在的頁面現在不存在了,會造成大量死鍊接,需要做301跳轉來保存可訪問性。

  晚上找了一些辦法:

  1. 如果數量少,可以手工在菜單admin/config/search/path/add來添加;
  2. 如果數量太多,還可以用一個模塊Path redirect import來批量添加;
  3. 而我采用了另外一種辦法:修改了自定義模塊,在menu項添加老網址,使用drupal_goto函數跳轉到希望的新網址。

  代碼片段如下:

function my_module_menu() {
  $items = array();
  ......
  $province_wrong_right = array(
    '上海' => '上海市',
    '雲南' => '雲南省',
    '内蒙古' => '内蒙古自治區',
    '北京' => '北京市',
    '吉林' => '吉林省',
    '四川' => '四川省',
    '天津' => '天津市',
    '甯夏' => '甯夏回族自治區',
    '安徽' => '安徽省',
    '山東' => '山東省',
    '山西' => '山西省',
    '廣東' => '廣東省',
    '廣西' => '廣西壯族自治區',
    '新疆' => '新疆維吾爾自治區',
    '江蘇' => '江蘇省',
    '江西' => '江西省',
    '河北' => '河北省',
    '河南' => '河南省',
    '浙江' => '浙江省',
    '海南' => '海南省',
    '湖北' => '湖北省',
    '湖南' => '湖南省',
    '甘肅' => '甘肅省',
    '福建' => '福建省',
    '西藏' => '西藏自治區',
    '貴州' => '貴州省',
    '遼甯' => '遼甯省',
    '重慶' => '重慶市',
    '陝西' => '陝西省',
    '青海' => '青海省',
    '黑龍江' => '黑龍江省',
  );
  foreach ($province_wrong_right as $wrong => $right) {
    $items[“province/$wrong“] = array (
      'title'=>'',
      'page callback'=>'redirect_301',
      'page arguments'=>array(“province/$right“),
      'access arguments'=>array('access content'),
    );
  }
  return $items;
}

function redirect_301($path) {
  drupal_goto($path,array(),301);
}

  上面例子做了省份的跳轉,後面可以再添加地市、區縣,也可以添加從區縣跳轉地市、地市跳轉省份等各種組合。 還有其它drupal站都可以使用這樣的辦法來做301重定向。

自由标簽:

回應

發表新回應

Plain text

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