一:先说个大类重定向;
二:再详细说说环境为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找找
在下面添加以下代码
$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
规范域名:
或者如下(在linux/BSD平台测试过)
结构变化:
这里推荐另一种,重定向失败的URL到其他web服务器
当然如果绝对要转移到新目录,
建议用.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
二:再详细说说环境为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');
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]
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]
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]
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






