XYZ's Blog

Follow your heart

Destoon设置整站301跳转

Posted on February 8, 2011 | Posted in 编程开发

其实也是当时在搭建中华卫浴网(http://www.chnweiyu.com)时候做的。当时的情况大概是这样,上司将网站放在了Windows 2003+IIS6 的服务器上面,这个环境下不支持.htaccess,同时他启用了destoon各个模块的二级域名,这样的话假如现在有一篇ID为123的文章,那么我们既可以通过http://www.chnweiyu.com/news/show.php?itemid=123访问,同时也可以通过http://news.chnweiyu.com/show.php?itemid=123进行访问,当时上司提出了一个要求,说是这样对SEO不利有多个内链到同一个页面什么的可能会重复收录有作弊嫌疑,要求将顶级域名的链接通过301跳转到二级域名的链接。

当时我对SEO可谓是刚刚接触,也没怀疑什么,于是就按照他的意思做了。到现在我对SEO多少有点了解(=。=当然我到现在依然是菜鸟一枚……),其实要做到不被重复收录根本不需要做跳转,只需要在robots.txt文件里边加上下面代码即可禁止蜘蛛对目录的访问。

User-agent:*
Disallow:/news/

不过当时既然做了傻事,现在就贴出来分享一下吧。我当时的做法是先建立一个301.php文件,然后往文件里边输入下面代码。

<?php
$the_host = $_SERVER['HTTP_HOST'];   //取得当前访问域名
$url = $_SERVER['PHP_SELF'];   //获取域名后的字串,如:/news/index.php
$filename= substr( $url , strrpos($url , '/')+1 );   //提取当前文件名
$querystring = $_SERVER["QUERY_STRING"];   //获取问号后面的参数
$str = $_SERVER['PHP_SELF'];
$arr = explode('/',$str);
$arr = array_reverse($arr);

if($arr['1'] == "buy" or $arr['1'] == "sell"  or $arr['1'] == "zhidao" or $arr['1'] == "brand"  or $arr['1'] == "exhibit" or $arr['1'] == "exhibit"  or $arr['1'] == "company"  or $arr['1'] == "photo"  or $arr['1'] == "t" ){
if ($the_host !== $arr['1'].'.chnweiyu.com'){//验证当前访问域名是否和预先设定域名不一致:若返回结果为真,则进行如下跳转——
if ($querystring !== ''){  //验证文件名后是否有参数,如果有参数则跳转——
header('HTTP/1.1 301 Moved Permanently');   //发出301头部,表明永久重定向
header('Location: http://'.$arr['1'].'.chnweiyu.com/'.$filename.'?'.$querystring);    //跳转到我的新域名地址【带参数】
}
elseif ($filename == 'index.php'){ //如果是主页则直接跳转到新域名
header('HTTP/1.1 301 Moved Permanently');  //发出301头部,表明永久重定向
header('Location: http://'.$arr['1'].'.chnweiyu.com/');   //跳转到我的新域名
}
else{//如果无参数则跳转到——
header('HTTP/1.1 301 Moved Permanently');  //发出301头部,表明永久重定向
header('Location: http://'.$arr['1'].'.chnweiyu.com/'.$filename);    //跳转到我的新域名地址【不带参数】
}
}
}
?>

当然是用的时候要将chnweiy.com换成你自己的域名,以及将$arr['1']这个数组里边的元素换成你要的二级域名,最后在config.inc.php文件开头或者结尾加入require '301.php';,那么就可以所有的php文件都引用了301.php这个文件,实现整站的跳转。

现在看来当时是做了多余的事情了,像我当时那位负责SEO的上司在技术方面实在是一般,当然人品也是很一般……但人家比我有胆识,就算不会做的都说会做,先获得处理问题的机会,然后再想解决问题的方法,所以他是我上司而不是我是他上司……

Sponsor