最近同事在整理电话号码库数据的时候,发现省市区几级数据有很多不规范的地方,造成简称全称重叠、省市区级别错乱等问题,后来找到标准的行政划分名称,在数据库进行了批量替换,但以前存在的页面现在不存在了,会造成大量死链接,需要做301跳转来保存可访问性。
晚上找了一些办法:
- 如果数量少,可以手工在菜单admin/config/search/path/add来添加;
- 如果数量太多,还可以用一个模块Path redirect import来批量添加;
- 而我采用了另外一种办法:修改了自定义模块,在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重定向。
评论1
感谢分享
感谢分享