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’;语句将其包含进去,这就可以实现多域名转向至同一站点了。