用ASP或PHP实现两个域名内页之间的301跳转

如果一个网站拥有两个域名:admini5.cn和admini5.com。在网站运营前期,主推admini5.cn,但发展到中期,由于品牌或
产品定位的原因,admini5.cn这个域名不再适合当前情况,要更换成admini5.com。作为SEO,我们肯定推荐使用301跳转,当用户访问
admini5.cn时,自动引导用户进入新域名admini5.com,可以通过程序或域名跳转实现301跳转,这样可以将旧域名PR传递到新域名。但
是如果用户收藏了旧域名的某个内容页(譬如:admini5.cn/content/20070808.html),通过域名跳转直接引导到
admini5.com首页恐怕会产生较差用户体验,特别是对未及时获知域名更换的用户;最好方式是实现通配,动态的将旧域名某个内页跳转到新域名相同页
面的URL,那如何用技术手段实现新旧内页URL之间的301跳转?

即:从admini5.cn/content/20070808.html跳转到 admini5.com/content/20070808.html,并使浏览器返回301代码。

例如:大旗网域名由chinabbs.com换成 daqi.com博客网域名由blogchina.com换成bokee.com有兴趣或者有解决办法的程序员,请留下你的联系方式或者发表评论,一起探讨下关于URL重定向的相关问题。

PHP下的实现方式(参考):.htaccess文件代码如下(admini5.com的.htaccess如此设置):

Options +FollowSymlinksRewriteEngine onrewritecond %{http_host}
^admini5.com [nc]rewriterule ^(.*)$ http://www.admini5.com/$1 [r=301,nc]

注释1:如果用户访问http://admini5.com/,则跳转至http://www.admini5.com,且返回301状态码;当用户访问
http://admini5.com/post/301.htm,则跳转至http:
//www.admini5.com/post/301.htm,并返回301状态码。

注释2:测试URL:http:
//www.admini5.com/,你可以访问http://www.admini5.com/post/301.htm我在admini5.com
下配置了.htaccess文件,使其301跳转至http://www.admini5.com/post/301.htm我的.htaccess
配置实现了由主域名(admini5.com)301跳转至二级域名(www.admini5.com);

结论:

Options +FollowSymlinksRewriteEngine onrewritecond %{http_host}
^www.admini5.cn [nc]rewriterule ^(.*)$ http://www.admini5.com/$1
[r=301,nc]

ASP脚本实现301跳转的方法:

ASP/Visual Basic代码

  1. <%if request.ServerVariables(“HTTP_HOST”)=“admini5.cn” or request.ServerVariables(“HTTP_HOST”)=“www.admini5.cn” Then
  2. if Request.ServerVariables(“QUERY_STRING”)<>“” Then p=“?”
  3. Response.Status=“301 Moved Permanently”
  4. Response.AddHeader “Location”,http://www.admini5.com”&Request.ServerVariables(“SCRIPT_NAME”)&p&Request.ServerVariables(“QUERY_STRING”)
  5. Response.End
  6. end if%>

一、if request.ServerVariables(“HTTP_HOST”)=”admini5.cn” or request.ServerVariables(“HTTP_HOST”)=”www.admini5.cn” Then

当发现客户是用旧域名来访问网站的,则进入转向流程

二、if Request.ServerVariables(“QUERY_STRING”)<>”” then p=”?”

Response.Status=”301 Moved Permanently”

当发现页面是含参数的,则加入“?”

发送转向的HTTP状态码301

三、 Response.AddHeader
“Location”,”http://www.admini5.com”&Request.ServerVariables(“SCRIPT_NAME”)&p&Request.ServerVariables(“QUERY_STRING”)

当不含参数时,变量P和REQUEST.ServerVariables都为空

当含有参数时,则生成被请求页的的相对URL。这样就达到了一种效果:无论客户访问哪一页,都会自动转向到另一个页面的同一文件里且包含同一个参数。

举例:www.admini5.cn/go.asp?id=12345会自动301到www.admini5.com/go.asp?id=12345;

http://www.admini5.cn/xiaoshuo.asp会自动301到www.admini5.com/xiaoshuo.asp

from:http://www.admini5.com/xunlei/show-2-1.html