Home >php教程 >php手册 >301重定向的两种实现方法

301重定向的两种实现方法

WBOY
WBOYOriginal
2016-06-13 09:38:101016browse

从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。

一般来说,有以下两种方法可以实现301重定向。

修改.htaccess文件

代码如下:

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} bkjia.com$ [NC]
RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} bkjia.info$ [NC]
RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L]
</ifmodule>

关键代码就是2句话:

RewriteCond %{HTTP_HOST} bkjia.com$ [NC]
RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L]

上面的域名是需要被重定向的旧域名,下面的是现在网站的域名。

使用PHP的重定向代码

新建一个index.php文件,然后参考下面代码按自己的重定向要求做简单修改:

<?php
$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
switch ($the_host)
{
    case "www.bkjia.tk":
    case "bkjia.tk":
        $location = "Location: http://bkjia.com" . $request_uri;
        break;
    case "blog.bkjia.tk":
        $location = "Location: http://blog.bkjia.com" . $request_uri;
        break;
    case "www.moiya.tk":
    case "moiya.tk":
        $location = "Location: http://bkjia.com";
        break;
    default:
        $location = "Location: http://bkjia.com";
        break;
}
header('HTTP/1.1 301 Moved Permanently');
header($location);
exit();
?>

如果只要对一个域名进行重定向,可以把代码简化成下面的形式:

<?php
$the_host = $_SERVER['HTTP_HOST'];//取得进入所输入的域名
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断后面的请求部分
if($the_host !== 'bkjia.com')//bkjia.com是我现在的域名
{
    header('HTTP/1.1 301 Moved Permanently');//发出301头部
    header('Location: http://bkjia.com'.$request_uri);//跳转到我的新域名地址
    exit();
}
?>

注意,最后的exit()函数是一定要写的,我最初就没有写,结果只能重定向首页,像http://www.bkjia.com/guestbook这样的网页,就无法进行重定向。

最后,关于重定向的一些细节:如果要对三个域名进行重定向,重定向前,首先将这三个域名作为Addon Domain绑定到我的服务器上去,并让这三个域名指向同一个文件夹,这样,只要修改这一个文件夹中的.htaccess文件或者index.php文件就可以了。如果没有.htaccess文件或者index.php文件,新建一个即可。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn