通过代码的方式实现301永久重定向的方法

品味人生 • 发布于 2019-02-01 21:37:02

这个家伙很害羞,不想介绍自己!

做SEO的人都知道,将一级域名通过301的方式重定向到带有www的域名可以避免网站内容重复,对搜索引擎优化有一定的好处。

常见的做法是使用两个虚拟机A绑定一级域名(例如:frontopen.com),B绑定www的二级域名(例如:www.frontopen.com) 然后在A主机上设置301到B主机,以实现301永久重定向。

虽然这么做没什么问题,但是如果只通过一台虚拟机实现301跳转是不是更好呢?

有些购买虚拟空间的朋友,如果发现自己的虚拟机可以绑定一级域名和www域名的话,不妨试试,可以省下一个空间的钱。


一、通过PHP程序脚本实现
首先在一台服务器上绑定两个域名(frontoen.com,www.frontopen.com),将两个域名绑定完成后,使用如下代码:


$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if($the_host !== 'frontopen.com')
{
header('HTTP/1.1 301 Moved Permanently'); //向浏览器返回301状态,主要是供蜘蛛判断
header('Location: http://www.frontopen.com'); //将页面跳转到www.frontopen.com
}
?>

将上面的脚本保存为.php文件,具体使用方法需要根据自身首页类型进行判断。
如果站点首页为静态文件,例如index.html,则需要将服务器默认页面改为index.php,index.html,然后将上面的代码命名为index.php。
如果站点本身就是动态页面,则可以将上面的代码保存为301jump.php;然后在首页的页头引用此文件,如下面代码:



二、通过.htaccess文件,设置Rewrite规则
此方法需要使用apache服务器,并且服务器上开启了Rewrite模块。不过目前所有的服务商基本都会开启这个模块,因此不用太担心。
操作方法与方法一相同,都需要将两个域名绑定到同一台虚拟机上。
然后将以下代码添加到.htaccess文件中,即可实现301跳转。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^frontopen.com
RewriteRule ^(.*)$ http://www.frontopen.com/$1 [R=permanent,L]

请根据自己的域名自行修改,不要直接复制粘贴,否则会跳到前端开拓者来的哦