程序员人生 网站导航

虚拟主机301重定向详细教程,以DedeCms为例

栏目:DedeCMS时间:2013-10-14 13:16:20

刚开始和绝大部分站长一样,起初也以为好几个域名绑到同一个网站,会增加收录和流量。但是随着时间的推移,并没有达到自己想要的效果,反而是收录减少、Pr下降。有天一个站长朋友的话提醒了我“做301吗”。于是在网上查找关于301的内容,才发现301重定向对于多个域名指向同一网站具有非常好的SEO效果(在这之前我根本就不知道301是什么,汗!)尤其是对更换域名和集中权重。301重定向怎么做呢?又起初查找。检验地带网用的是dede5.6的程序,win虚拟主机。可是网上对于这种情况几乎没有详细方法。最多就是来段php代码:

<?php
{
Header("HTTP/1.1 301 Moved Permanently");
Header("Location:http://chunse.net.cn");
exit();
}
?>

这段代码怎么用?放在哪里?如何实现?却都没有一个详细的说明。经过整整2天的查资料、自己摸索和试验,终于实现了不同域名、不带www定向到带www和3.级域名的301重定向。下面是详细办法:
一、不同域名的重定向(网上的方法就可以实现)比如www.chunse.net.cn定向到chunse.net.cn(chunse.net.cn作为你希望搜索引擎抓取的主域名)
1、虚拟空间一般都会有子目录功能,将你需要重定向的域名比如www.chunse.net.cn绑定到子目录
2、创建一个index.php文件
文件内容:这里有2种写法
(1)

<?php
{
Header("HTTP/1.1 301 Moved Permanently");
Header("Location:http://chunse.net.cn");
exit();
}
?>

(2)这是针对有2个以上的次级域名(也就是除chunse.net.cn之外的域名)

<?php
$HOST=$_SERVER['HTTP_HOST'];
if ($HOST=="www.chunse.net.cn" || $HOST=="bbs.chunse.net.cn"){
Header("HTTP/1.1 301 Moved Permanently");
Header("Location:http://chunse.net.cn");
exit();
}
?>

这段代码的前提是你必须将其他域名解析到子目录所在的IP地址!!!
3、将index.php上传到子目录的根目录下面。现在试试点击www.chunse.net.cn是不是定向到chunse.net.cn
二、不带www定向到带www和3.级域名的301重定向
关于不带www的域名和空间商赠送的3.级域名会分散网站权重的文章绝大部分,这里不多说。3.级域名是指空间商赠送给你的域名。
来看详细方法(这个是重点!试验了N次才成功!)
dede5.6的程序中有自带的index.php
默认是这样:

<?php
if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
//自动生成HTML版
if(isset($_GET['upcache']))
{
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$GLOBALS['_arclistEnv'] = 'index';
$row = $dsql->GetOne("Select * From `dede_homepageset`");
$row['templet'] = MfTemplet($row['templet']);
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
$pv->SaveToHtml(dirname(__FILE__).'/index.html');
include(dirname(__FILE__).'/index.html');
exit();
}
else
{
header('HTTP/1.1 301 Moved Permanently');
header('Location:index.html');
}
?>

要实现301重定向实际上很简单(虽然简单,但是是我试验了N次、N种方法才成功的!)
用下面代码替换原有的index.php内容:(由于这里会涉及到效果演示,没有网址将无法实现。如违反规定,请管理员修改或删掉!) 

<?php
$HOST=$_SERVER['HTTP_HOST'];
if ($HOST=="www.chunse.net.cn" || $HOST=="chunse.4.guoxiong.cn"){
Header("HTTP/1.1 301 Moved Permanently");
Header("Location:http://chunse.net.cn");
exit();
}

if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
//自动生成HTML版
if(isset($_GET['upcache']))
{
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$GLOBALS['_arclistEnv'] = 'index';
$row = $dsql->GetOne("Select * From `dede_homepageset`");
$row['templet'] = MfTemplet($row['templet']);
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
$pv->SaveToHtml(dirname(__FILE__).'/index.html');
include(dirname(__FILE__).'/index.html');
exit();
}
else
{
header('HTTP/1.1 301 Moved Permanently');
header('Location:index.html');
}
?>

请注意,这里增加了红色部分的代码!使用时请将里面的域名换成自己的!
OK了,现在你试着点击www.chunse.net.cn和chunse.4.guoxiong.cn,是不是定向到了chunse.net.cn。
你还可以使用检测工具http://www.seoconsultants.com/tools/headers.asp#results
http://www.seobox.org/getheader.htm(这个是中文的)
查看是不是返回到了301状态。
上面是一个新手摸索出来的方法,如有不妥,请高手指教!!!!

本文转自:DedeCMS官方论坛

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐