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

  • 内容
  • 相关

转载请注明本文链接:https://blog.l9s.cc/.html  [生成短网址]

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

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

$host=’l9s.cc’;//主站域名
if($_SERVER[‘HTTP_HOST’]!=$host)
{
header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部
header(‘Location:’.$host);
}
将上述代码放入核心文件中,虽然能够转向,但是问题又来了,一旦访问非LsevenTT.com的域名的其他页面结果全部都转到l9s.cc的主页页去了,能否一对一的301转向呢?答案当然是肯定的,php确实够强大,呵呵~~完整的多域名301转向至同一网站代码如下:
<?php
/*
o******************************o
* *
*文件:301.php *
*功能:用于301转向。 *
*版本:终极版*
*URL:http://l9s.cc *
* *
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=’l9s.cc’;//主站域名
$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’;语句将其包含进去,这就可以实现多域名转向至同一站点了。

本文标签:

版权声明:若无特殊注明,本文皆为《王晓明》原创,转载请保留文章出处。

本文链接:php完美实现多个域名指向同一网站的301转向 - https://blog.l9s.cc/教程代码/137.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注