PHP实现301永久重定向的方法

网站的301跳转是网站建设过程中经常遇到的一个问题,现在绝大部分服务器都有非常简便的301重定向方法,但还是有些时候会遇到服务器权限等原因,导致只能使用asp或者php等程序来实现301跳转,下面我们来进入php实现301重定向的实际应用内容。

也就是.htaccess代码来实现网址的301跳转,假如我们使用php代码,其实也同样可以用一段代码来实现网址的301重定向。如果单个页面需要做301重定向,就比较简单了,在php页面顶部加入如下的一段代码即可。

<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: https://www.bailuze.com");
?>

当然此种方法更适用于改版后的网站,很简单方便,不过正常来说绝大部分情况使用这种跳转代码的方式就不够友好了,理想的方案是对不同的url跳转不同的网址链接。

一、首先新建1个301.php(调用文件名随意)

<?php 
$the_host = $_SERVER['HTTP_HOST'];//取得当前域名
$the_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面部分
$the_url = strtolower($the_url);//将英文字母转成小写
if($the_url=="/index.php")//判断是不是首页
{
$the_url="/";//如果是首页,赋值为“/”
}
if($the_host !== 'www.bailuze.com')//如果域名不是带www的网址那么进行下面的301跳转
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:https://www.bailuze.com'.$the_url);//跳转到带www的网址
}
?>

因为有朋友留言说首页跳转之后网址里会出现/index.php,于是增加了一个判断是否是首页的语句。

其中if($the_host !== ‘www.bailuze.com’)中的“!==”是不完全等于的意思,也可以用“!=”不等于,这样一来,除了可以将bailuze.com跳转到带www的网址,还可以把所有绑定到这个空间的域名全部跳转至:“www.bailuze.com”。

二、在网页文件中调用301.php

<?php include("301.php"); //301重定向 ?>

将这个代码放到所有网页的最前面调用。

重定向就做好了,将301文件上传到网站目录,就可以去看着成果了。

301跳转拓展:

使用.Htaccess文件实现301永久重定向

301重定向对广大站长来说并不陌生,从网站建设到目录优化,避免不了对网站目录进行更改,在这种情况下用户的收藏夹里面和搜索引擎里面可能保存的还是老的地址,在打开这些链接时会无法显示页面出现404的错误,造成很差的用户体验并失去了很多流量,今天笔者就给大家分享一下实现301重定向的方法。

从搜索引擎优化的角度来看,目前301重定向是网站目录更改后重新定向最为可行的一种办法。在更改地址使用了301重定向后,搜索引擎只会对新地址进行索引,同时会把旧地址下原来收录的链接转移到新地址下,而上述的这些操作并不会影响到网站在搜索引擎的排名。

科普:htaccess是Hypertext Access的简写,读音[ˈhaɪpətekst ˈækses] ,含义为:Hypertext Access(大概含义为超文本访问通道)

实现301重定向最直接的方法是编辑.htaccess文件,在对.htaccess文件进行操作之前,一定要备份好原来的.htaccess文件,以避免修改出错带来不必要的麻烦。

1.重定向bailuze.com到www.bailuze.com

这种重定向非常常见,最终目的是实现域名的唯一性,也是seo优化必须要做的。实现方法是在.htaccess文件中加入以下规则:

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.bailuze.com$ [NC]
RewriteRule ^(.*)$ https://www.bailuze.com/$1 [L,R=301]

注:使用这种301重定向方式后,当打开类似bailuze.com的网址后会自动定向到www.bailuze.com。

2.重定向www.bailuze.com到bailuze.com

这种操作刚好和上面的域名显示是相反的,规则如下:

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^bailuze.com$ [NC]
RewriteRule ^(.*)$ https://bailuze.com/$1 [L,R=301]

注:使用此301重定向方式,当打开类似www.bailuze.com的网址后会自动定向到bailuze.com。

3.重定向旧域名到新域名

这种操作经常用于更换域名时用到,很多站长因为种种原因可能要为站点更换域名,此时多采用以下规则来实现重新定向:

代码如下:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !旧域名$ [NC]
RewriteRule ^(.*)$ 新域名/$1 [L,R=301]

注:当用户打开老的域名后,会自动重定向到新的域名下的站点,此时域名显示格式为不带www.的格式。

4.重定向带www的旧域名到带www的新域名

这种操作是基于第三种方式的改良,只是显示网址显示为带www的那种。

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !不带www的旧域名$ [NC]
RewriteRule ^(.*)$ 带www的新域名/$1 [L,R=301]

注:当用户打开老的域名后,会自动重定向到新的域名下的站点,并且网址显示格式为带www的格式。

5.重定向域名1/file/file.php 到域名2/otherfile/other.php

这种操作针对于更改一个域名的同时,网站目录路径也发生变化的情况下使用,规则如下:

代码如下:

RewriteCond %{HTTP_HOST} ^域名1$
RewriteRule ^file/file.php$ 域名2/otherfile/other.php [R=301,L]

注:当用户访问老的域名路径时,会重新定向到新的域名新的路径下。

以上几种方法是在网站管理与优化过程中经常会使用到的301重定向方法,当然,也可能遇到不大相同的状况,这时候就需要根据自己的目的去适当调整下命令规则以适应不同的需求。

Apache(及kangle)强制301http跳转https

修改目录下的.htaccess文件(如果是虚拟主机,这个可以问一下服务商是否支持)和Kangle虚拟主机时配置差不多。

RewriteEngine on  
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L]

如果没有.htaccess文件,请自己建立。

原文链接:https://www.bailuze.com/7183.html,转载请注明出处。
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0