域名统一、网站移植、域名更换实现301、302重定向

不指定 ljpbin 发布于:2009/09/12 03:15 , 技术交流 , 评论(0) , 阅读(785) | |
一:先说个大类重定向;
二:再详细说说环境为PW程序的重定向。
301,302 都是HTTP状态的编码,表示某个URL发生了转移,不同之处在于:301 代表永久性转移(Permanently Moved),302 代表暂时性转移(Temporarily Moved)。
301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址,如果我们把一个地址采用301跳转方式跳转的话,搜索引擎会把老地址的PageRank等信息带到新地址,同时在搜索引擎索引库中彻底废弃掉原先的老地址。

一:大类
在PHP中,一般实现页面跳转的语句如下:
php header(’Location: http://www.abc.com/’);
但是当我们使用工具查看这个HTTP头,发现他返回的是一个HTTP 302临时重定向。而不是我们所期望的HTTP 301永久重定向。
应该如何实现HTTP 301永久重定向呢?其实也很简单,只需增加一行代码:
php header(’HTTP/1.1 301 Moved Permanently’);
header(’Location: http://www.abc.com/’);
当我们再次查看这个页面的HTTP头的时候,他返回的就是我们所期望的HTTP 301永久重定向了。
实现方法:
在所需文件中加入上述相应代码就可以了。

二:在专门针对PW论坛程序说明一下
关于域名统一如http://www.abc.com,现在要换成http://abc.com,
关于网站移-植如:http://www.abc.com ,现在是http://www.abcd.com.cn
关于结构更改如:http://www.abc.com ,现在是http://www.abc.com/bbs

一般情况下我喜欢建议人用RewriteRlue来完成,但毕竟不是每个站长都有独立主机,并且靠重写也要耗一定资源的,今天先说下,没有条件用重写规则的方法。

第一步:把要处理的域名都绑定到指定网站目录。
第二步:
打开global.php找找
file_exists('install.php') && ObHeader('install.php');
error_reporting(E_ERROR | E_PARSE);
set_magic_quotes_runtime(0);
function_exists('date_default_timezone_set') && date_default_timezone_set('Etc/GMT+0');


在下面添加以下代码

$host= 'www.gooader.cn'; //填写你要统一的地址
if ($_SERVER['HTTP_HOST'] != $host) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: http://{$host}{$_SERVER[REQUEST_URI]}");
}
unset($host);


如果支持RewriteRlue,也可以用最规则来完成
apache/iis /.htaccess

规范域名:
RewriteEngine on
RewriteCond   %{REMOTE_HOST}  !^.+\.abc\.com$
RewriteRule   ^(/~.+)         [url]http://www.abcdefg.com/$1[/url] [R,L]


或者如下(在linux/BSD平台测试过)
RewriteCond %{HTTP_HOST}   !^[url]www.abc.com[/url] [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         [url]http://www.abc.com/$1[/url] [R]


结构变化:
这里推荐另一种,重定向失败的URL到其他web服务器
RewriteEngine on
RewriteCond   %{REQUEST_URI}  !-U
RewriteRule   ^(.+)          [url]http://www.abc.com/bbs/$1[/url]


当然如果绝对要转移到新目录,
建议用.htaccess

RewriteEngine on
RewriteRule   ^/$  /bbs/  [R]


或者用

RewriteEngine on
RedirectMatch ^/$   [url]http://www.abc.com/bbs/[/url]


总结 ,Rewrite很强大,PHP很强大,重点是去挖掘,规则和方法都是想出来的,欢迎大家交流,并一起学习分享更多规则。

参考资料http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Tags: , , ,
发表评论

昵称

网址

电邮

您也可用OpenID登入:
打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]