LsevenTT博客-站群哥

认真你就输了

php完美实现多个域名指向同一网站的301转向

前不久,一哥们儿在给我博客做SEO的时候建议我做个301转向,因为我的博客为两个域名(LsevenTT.com及www.LsevenTT.com)同时访问同一个站点,需要做个主站,其他域名通过301转向到主站,以免搜索引擎分担主站的权重。开始的时候准备通过修改.htaccess实现301转向,不过貌似本博客用的nginx服务器,也没有服务器配置权限,看来只能通过修改php文件实现301转向了。

开始直接在核心文件(如:config.php等配置文件)中添加301转向代码,但是因为两个域名指向的是同一个网站,不论访问那个域名,都出现“死循环”的现象(用IE浏览器一直加载但无法打开页面,用Google浏览器提示转向循环)。要解决死循环还是比较简单的,判断一下访问的主机就ok了,方法如下:

$host=’LsevenTT.com’;//主站域名
if($_SERVER[‘HTTP_HOST’]!=$host)
{
header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部
header(‘Location:’.$host);
}

将上述代码放入核心文件中,虽然能够转向,但是问题又来了,一旦访问非LsevenTT.com的域名的其他页面结果全部都转到LsevenTT.com的主页页去了,能否一对一的301转向呢?答案当然是肯定的,php确实够强大,呵呵~~完整的多域名301转向至同一网站代码如下:

<?php
/*
o******************************o
* *
*文件:301.php *
*功能:用于301转向。 *
*版本:终极版*
*URL:http://LsevenTT.com *
* *
o******************************o
*/

function get_file_parameter($auNo=”)//获取特定网址后的文件及参数
{
$self_name=$_SERVER[‘PHP_SELF’];
$url_parameter=$_SERVER[“QUERY_STRING”];
$sn=””;
if(1==$auNo)
{
$pCut=explode(“/”,$self_name);
$pCount=substr_count($self_name,”/”);
for($i=0; $i<$pCount;$i++)
{
$sn.=$pCut[$i].”/”;
}
}
else
{
$sn=$self_name;
}
if(empty($url_parameter))
$url=$sn;
else
$url=$sn.”?”.$url_parameter;
return $url;
}
$host=’LsevenTT.com’;//主站域名
$url=’http://’.$host.get_file_parameter();

if($_SERVER[‘HTTP_HOST’]!=$host)
{
header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部
header(‘Location:’.$url);//转向
}
?>

将上述代码储存为301.php,在核心文件(或需要转向的文件)中通过require_once ‘301.php’;语句将其包含进去,这就可以实现多域名转向至同一站点了。

 

相关阅读

3 comments on “php完美实现多个域名指向同一网站的301转向

  1. Michael 2015年3月25日 在 上午10:32

    如果是用Nginx服务器,可以直接在conf文件中配置主机名重定向 😀