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的控制语句
Oct 09 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP中使用curl入门教程
Jul 02 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
php curl发送请求实例方法
Aug 01 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php强制下载类型的实现代码
2011/04/21 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
Python中shape计算矩阵的方法示例
2017/04/21 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
python画图的函数用法以及技巧
2019/06/28 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
网络维护中文求职信
2014/01/03 职场文书
机电一体化求职信
2014/03/10 职场文书
镇创先争优活动总结
2014/08/28 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
大学学生会辞职信
2015/05/13 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android