【站长学堂】ISAPI Rewrite做301重定向的若干问题

屏聚源码 屏聚学院评论133,299阅读模式

  网站因为存在多个需要重定向的问题,把原来的VPS换成了韩国空间,还更换了更容易记忆的域名,这样造成了两个必须解决的问题。

  一、原域名到新域名的301重定向问题

  seoer都知道,如果一个网站绑定多个域名势必会造成搜索引擎的误判,轻则降权,重则K站。而且两个域名会分享一个站的权重,这并不是我们希望看到的。很多时候,很多人会把xxx.com 301重定向到www.xxx.com,原因就在于此。

  二、子目录重定向到二级域名的问题

  因为原来用vps,有主机的操控权,主站和论坛在同一个目录下。现在改用虚拟主机,只能通过子目录绑定的方法实现双站同时运行。即wwwroot文件夹是主站(www.xxx.com),wwwroot\bbs\下是论坛(bbs.xxx.com)。但这样论坛可以通过www.xxx.com/bbs访问,这不是我想看到的,当然也不利于seo。

  先说第一个问题:

  更改域名后,重定向一定是永久的,之前的Business.com就是因为302非永久性重定向被Google直接K回老家,关键字消失,PR归零。网上有很多301重定向的文章,我这里主要说说wim2003、iis 6.0、ISAPI_Rewrite 2.x下利用httpd.ini来完成301重定向。把编辑好的httpd.ini上传到域名绑定的目录(不都是根目录),然后让虚拟主机服务商帮你加载。当然,如果你有ISAPI操作权限可以自己完成。httpd.ini文件只能替换,不能删除,如果误删,上传之后让服务商再加载一次。

  wwwroot目录下的httpd.ini内容:

  [ISAPI_Rewrite]

  # 3600 = 1 hour

  CacheClockRate 3600

  RepeatLimit 32

  RewriteCond Host: ^www\.yyy\.com$

  RewriteRule (.*) http\://www\.xxx\.com$1 [I,RP]

  # 把www.yyy.com 永久重定向到www.xxx.com [I,RP]

  RewriteCond Host: ^yyy\.com$

  RewriteRule (.*) http\://www\.netreds\.com$1 [I,RP]

  # 把yyy.com 永久重定向到www.xxx.com

  RewriteCond Host: ^xxx\.com$

  RewriteRule (.*) http\://www\.xxx\.com$1 [I,RP]

  # 把xxx.com 永久重定向到www.xxx.com

  wwwroot/bbs/目录下的httpd.ini内容:

  [ISAPI_Rewrite]

  # 3600 = 1 hour

  CacheClockRate 3600

  RepeatLimit 32

  RewriteCond Host: ^bbs\.yyy\.com$

  RewriteRule (.*) http\://bbs\.xxx\.com$1 [I,RP]

  # 把bbs.yyy.com 永久重定向到bbs.xxx.com

  然后把域名 yyy.com、xxx.com、www.yyy.com、www.xxx.com绑定到wwwroot目录,把bbs.yyy.com与bbs.xxx.com绑定到wwwroot/bbs/目录,更换域名任务至此完成。

  现在说说第二个问题:

  域名重定向完成之后两天,我发现http://www.xxx.com/bbs 收录不少,但是bbs.xxx.com 收录为0,因为之前这个域名做过论坛,而且直接用域名+/bbs 作为域名。既然能一个域名重定向到另一个域名,那么肯定能把子目录定向到二级域名上。

  在网上找了很多关于301重定向的文章,其中不乏月光博客博主的文章,但大都只是泛泛的讲用各种方法实现重定向,根本不符合本站的条件。找到了一篇ISAPI_Rewrite3.0下的子目录重定向到二级域名:但是与本站不符合。找了有关301方面的一些常识,然后写了一条规则,解决了这个问题。

  [ISAPI_Rewrite]

  # 3600 = 1 hour

  CacheClockRate 3600

  RepeatLimit 32

  RewriteRule ^/bbs/(.*) http\://bbs\.xxx\.com/$1 [I,RP]

  此条规则卸载wwwroot目录下的httpd.ini里。

  这样,访问http://www.xxx.com/bbs/* 就会返回 http://bbs.xxx.com/*

  至此,更换域名和绑定子目录完成。总结以上,可以得出:1.搜索引擎是个好东西。2.举一反三,互联网也有你找不到的东西。3.敢于尝试,不拘泥于已存在的规则。

  备注本虚拟机目前使用的zblog重定向解决方案:

  以前对于window服务器的用户来说,重定向很难,很不好使用,当然现在也不是很方便。

  但是现在有些空间商的主机已经支持ISAPI Rewrite,那么301重定向就相对来说变得简单了。

  还是以实例来说明正确使用ISAPI Rewrite做301重定向的方法吧。

  10.01更新:1.3版的域名重定向:

  # For ISAPI_Rewrite 1.3 重定向域名

  RewriteCond Host: ^mlgjp\.com$

  RewriteRule (.*) http\://www\.mlgjp\.com$1 [I,R]

  这里我们要将mlgjp.com重定向到www.mlgjp.com

  由于ISAPI Rewrite现在使用较多的有两个版本2.x版跟3.x版

  那么我们规则就把两个版本的都写出来,3.0版本是不兼容2.0的规则的,只是有提供规则转换器,导入就可以转换了。

  # For ISAPI_Rewrite 2.x

  RewriteCond Host: ^mlgjp\.com$

  RewriteRule (.*) http\://www\.mlgjp\.com$1 [I,RP]

  # For ISAPI_Rewrite 3.x

  RewriteCond %{HTTP:Host} ^mlgjp\.com$

  RewriteRule (.*) http\://www\.mlgjp\.com$1 [NC,R=301]

  接下来还有一种情况,假设将本博客www.mlgjp.org重定向到www.mlgjp.com

  也给出两种版本的写法:

  # For ISAPI_Rewrite 2.x

  RewriteCond Host: ^www\.mlgjp\.org$

  RewriteRule (.*) http\://www\.mlgjp\.com$1 [I,RP]

  # For ISAPI_Rewrite 3.x

  RewriteCond %{HTTP:Host} ^www.\mlgjp\.org$

  RewriteRule (.*) http\://www\.mlgjp\.com$1 [NC,R=301]

  说明:[I,RP]:I表示忽略大小写,RP表示使用301转向。以上两种都是整个域名重定向

  单一页面重定向的写法,将根目录下的oldpage.html重定向到{#ZC_BLOG_HOST#}index.html:

  # For ISAPI_Rewrite 2.x

  RewriteRule ^/mlgjp.html$ {#ZC_BLOG_HOST#}index.html [I,O,RP,L]

  # For ISAPI_Rewrite 3.x

  RewriteRule ^/mlgjp.html$ {#ZC_BLOG_HOST#}index.html [NC,L,R=301,O]

  说明:O表示对URL进行标准化,L表示Last Rule,最后一条规则,也就是后面的重写规则对他不起作用,防止被其他匹配的规则再次重写。这里的路径可以是相对路径也可以是绝对路径。

继续阅读
屏聚源码
辅助编程工具通义灵码 你的智能编码助手 屏聚学院

辅助编程工具通义灵码 你的智能编码助手

通义灵码是阿里推出的基于通义大模型,提供代码智能生成、研发智能问答能力的人工智能编码助手,经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测试、代码注释...
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定