
最近同事在整理电话号码库数据的时候,发现省市区几级数据有很多不规范的地方,造成简称全称重叠、省市区级别错乱等问题,后来找到标准的行政划分名称,在数据库进行了批量替换,但以前存在的页面现在不存在了,会造成大量死链接,需要做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
感谢分享
感谢分享