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 相关文章推荐
DISCUZ 分页代码
Jan 02 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
php的curl封装类用法实例
Nov 07 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP正则表达式之RCEService回溯
Apr 11 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
PHP4.04简明安装
2006/10/09 PHP
php模板原理讲解
2013/11/13 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
Python通用函数实现数组计算的方法
2019/06/13 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
教师辞职报告范文
2014/01/20 职场文书
物流专业自荐信
2014/05/23 职场文书
效能风暴心得体会
2014/09/04 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
奖学金个人总结
2015/03/04 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
文明礼貌主题班会
2015/08/14 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript