论坛更换域名 网页重定向用301转向比较安全

2019-03-11 10:09:16来源: www.lyrs.net 阅读 ()

新老客户大回馈,云服务器低至5折

前段时间由于网站发展需要,将论坛从原主站子目录中独立出来,原来的域名http://www.***.com/bbs更换为http://bbs.***.com,为了保证原有良好收录和权重(PR为5),也保证原有地址可以访问,所以需要想办法在不被判为作弊的情况下将原有论坛中每个页面的地址转向到对应新地址。

开始没有想到直接在服务器上设置301转向,而是通过对404页面来路的分析进行了这样的设置:用PHP做页面如error.php,然后定义出错404转向页为error.php,然后在error.php中用$_SERVER[‘QUERY_STRING’];获取出错来路中的字符串(其中包含你原来的访问地址),然后再用字符串替换函数替换成新的就行了。这样论坛访问地址由http://www.***.com/bbs完全转化为http://bbs.***com访问,并且保证用户通过原链接如

http://www.***.com/bbs/thread-1-236598-1.html可正常跳转到对应新域名,error.php页面代码如下:

PHP代码

以下为引用的内容:
  1. <?php  //落叶人生域名更换跳转代码  
  2. $url=$_SERVER['QUERY_STRING'];   
  3. if(preg_match("/\/bbs\/?/i",$url))   
  4. {   
  5. $url=str_ireplace("404;http://www.***.com:80/bbs/","http://bbs.***.com/",$url);   
  6. $url=str_ireplace("404;http://www.***.com/bbs/","http://bbs.***.com/",$url);   
  7. $url=str_ireplace("404;http://***com:80/bbs/","http://bbs.***.com/",$url);   
  8. $url=str_ireplace("404;http://***.com/bbs/","http://bbs.***.com/",$url);   
  9. echo "论坛改版,地址更换,请点击下面地址访问该页面:<BR/>";   
  10. echo "<a href=".$url.">".$url."</a>";   
  11. echo "<script language=\"javascript\">window.location=\"".$url."\"</script>";   
  12. }   
  13. else  
  14. {   
  15. echo "<script language=\"javascript\">window.location=\"http:\/\/bbs.***.com\"</script>";   
  16. }   
  17. ?>   

前天在DISCUZ论坛看到有朋友说要换地址,想做301转向的,这才仔细研究了下301转向的问题,发现其实之前走了弯路,

直接用301永久转向就行了,况且GOOGLE网站管理员帮助文件中也说明了301转向是可行的:

XML/HTML代码

以下为引用的内容:来源:http://www.google.com/support/webmasters/bin/answer.py?hl=enanswer=93633

If you need to change the URL of a page as it is shown in search engine results, we recommended that you

use a server-side 301 redirect. This is the best way to ensure that users and search engines are directed

to the correct page. The 301 status code means that a page has permanently moved to a new location.

301 redirects are particularly useful in the following circumstances:

You‘ve moved your site to a new domain, and you want to make the transition as seamless as possible.

People access your site through several different URLs. If, for example, your home page can be reached in

multiple ways - for instance, http://example.com/home, http://home.example.com, or http://www.example.com

- it’s a good idea to pick one of those URLs as your preferred (canonical) destination, and use 301

redirects to send traffic from the other URLs to your preferred URL. You can also use Webmaster Tools to

set your preferred domain.

You‘re merging two websites and want to make sure that links to outdated URLs are redirected to the

correct pages.

IIS环境下301永久重定向的设置:

1.打开internet信息服务管理器,在欲重定向的网页或目录上按右键

2.选择“重定向到URL”

3.在“重定向到”输入框中输入要跳转到的目标网页的URL地址,如http://bbs.***.com  //这一项的设置我看有些SEO网站,包括点石互动的一篇类似的文章中设置的是单个网页的URL地址,那么原域名下所有的网页都跳到这个单一文件,落叶认为这不是一种明智的做法,我们直接设置为一个目录或者新域名,这样原域名所在的目录下的所有页面才能跳转到新域名下对应的页面

4.选中“资源的永久重定向”(勾选此向才能实现返回301状态码)

5.最后点击“应用”

Apache环境下301永久重定向的设置:

在网站根目录下的.htacess文件中作如下设置即可.

以下为引用的内容:
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^bbs(.*)$ http://bbs.mayi.us/$1 [R=301,L]
</IfModule>

 如果空间中还有其它伪静态设置,则只需把伪静态规则添加到《/IfModule》之上即可,但注意其它网站目录名不能以bbs开头,否则上规则还需要作一些小的修改

可以Apache中的设置相对容易些,虚拟主机用户也可以比较容易的设置,而IIS中的设置需要有服务器操作权限,所以设置的局限性大些,没有服务器操作权限的只有通过本文最开始提到的笨方法了.

当然,通过ASP程序或PHP程序控制也可以实现301重定向,即发送301状态的HTTP头即可

以下为引用的内容:

ASP代码:
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location",http://www.mayi.us
Response.End
%>

PHP代码:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://www.lyrs.net");
exit();
?>

DEDECMS5.5的首页就是这样跳转的:

PHP代码

以下为引用的内容:
  1. <?php   
  2. if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))   
  3. {   
  4.     header('Location:install/index.php');   
  5.     exit();   
  6. }   
  7. //自动生成HTML版   
  8. if(isset($_GET['upcache']))   
  9. {   
  10.     require_once (dirname(__FILE__) . "/include/common.inc.php");   
  11.     require_once DEDEINC."/arc.partview.class.php";   
  12.     $GLOBALS['_arclistEnv'] = 'index';   
  13.     $row = $dsql->GetOne("Select * From `cz_homepageset`");   
  14.     $row['templet'] = MfTemplet($row['templet']);   
  15.     $pv = new PartView();   
  16.     $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);   
  17.     $pv->SaveToHtml(dirname(__FILE__).'/index.html');   
  18.     include(dirname(__FILE__).'/index.html');   
  19.     exit();   
  20. }   
  21. else  
  22. {   
  23.     header('HTTP/1.1 301 Moved Permanently');   
  24.     header('Location:index.html');   
  25. }   
  26. ?>  

当然DEDECMS这样的处理并不是为更换域名,仅仅是为了作一个由index.php到index.html的跳转,采用的是301对搜索引擎还算友好。而事实上早期的动易ASP版的CMS与会在访问index.asp时判断首页生成是会直接跳转到静态页面,今天才发现原来返回的状态是302,而302似乎有作弊嫌疑,如果服务器默认文档顺序中index.asp在第一位,那估计会有问题了,这才想起这可能是首页(PR为6)原来在一个关键词从每一页到第二页,及首页快照总落后的部分原因了吧。

但是上面这两种在程序中实现的301重定向似乎只能实现单页面的永久定向,不方便实现整个目录301重定向。

作者:落叶 info#lyrs.net(#=》@)

博客:http://www.lyrs.net

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:由“新浪”和“死哪”浅谈错别关键字的选用

下一篇:网站团队管理的“北斗七星”