apache+php完美解决301重定向的两种方法


Posted in PHP onJune 08, 2011

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

关于301重定向的更多内容,大家不妨Google一下。本文只介绍实现方法啦!
301重定向的实现,我以前也写过一篇相关的文章,但这篇文章的解决方法比较简单,只能实现主页的跳转,本文介绍的这两种方法,可以完美实现301重定向。

方法1:修改.htaccess文件
代码如下:

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

本博需要对三个域名进行重定向,所以写的比较多,关键代码就是2句话
RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC] 
RewriteRule ^(.*)$ http://blog.3water.com/$1 [R=301,L]

红色的域名是需要被重定向的旧域名,绿色的是现在网站的域名。
方法2:使用PHP的重定向代码
新建一个index.php文件,然后参考下面代码按自己的重定向要求做简单修改:
<?php 
$the_host = $_SERVER['HTTP_HOST']; 
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; 
switch ($the_host) 
{ 
case "www.iflyhigher.tk": 
case "iflyhigher.tk": 
$location = "Location: http://3water.com" . $request_uri; 
break; 
case "blog.iflyhigher.tk": 
$location = "Location: http://blog.3water.com" . $request_uri; 
break; 
case "www.moiya.tk": 
case "moiya.tk": 
$location = "Location: http://3water.com"; 
break; 
default: 
$location = "Location: http://3water.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 !== '3water.com')//3water.com是我现在的域名 
{ 
header('HTTP/1.1 301 Moved Permanently');//发出301头部 
header('Location: http://3water.com'.$request_uri);//跳转到我的新域名地址 
exit(); 
} 
?>

注意,最后的exit()函数是一定要写的,我最初就没有写,结果只能重定向首页,像http://blog.iflyhigher.tk/guestbook这样的网页,就无法进行重定向。
最后,关于重定向的一些细节
由于要对三个域名进行重定向,重定向前,我首先将这三个域名作为Addon Domain绑定到我的服务器上去,并让这三个域名指向同一个文件夹,这样,只要修改这一个文件夹中的.htaccess文件或者index.php文件就可以了。如果没有.htaccess文件或者index.php文件,新建一个即可。
希望本文对需要进行301重定向的朋友有帮助。
转载请表明出处: Gevin的博客
PHP 相关文章推荐
php缓存技术介绍
Nov 25 PHP
PHP中的integer类型使用分析
Jul 27 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
如何使用php输出时间格式
Aug 31 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
php转换颜色为其反色的方法
Apr 27 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 #PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 #PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 #PHP
php写的简易聊天室代码
Jun 04 #PHP
php结合表单实现一些简单功能的例子
Jun 04 #PHP
PHP中对用户身份认证实现两种方法
Jun 04 #PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 #PHP
You might like
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
用Python写冒泡排序代码
2016/04/12 Python
快速了解Python中的装饰器
2018/01/11 Python
python3处理含有中文的url方法
2018/05/10 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
初任培训自我鉴定
2013/10/07 职场文书
学术会议欢迎词
2014/01/09 职场文书
小学体育教学反思
2014/01/31 职场文书
研发工程师岗位职责
2014/04/28 职场文书
工程部部长岗位职责
2015/02/12 职场文书
保险公司增员口号
2015/12/25 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis