如果一个网站拥有两个域名:domain1.com和domain2.com。
在网站运营前期,主推domain1.com,但发展到中期,由于品牌或产品定位的原因,domain1.com这个域名不再适合当前情况,要更换成domain2.com。
作为SEO,我们肯定推荐使用301跳转,当用户访问domain1.com时,自动引导用户进入新域名domain2.com,可以通过程序或域名跳转实现301跳转,这样可以将旧域名PR传递到新域名。
但是如果用户收藏了旧域名的某个内容页(譬如:domain1.com/content/20070808.html),通过域名跳转直接引导到domain2.com首页恐怕会产生较差用户体验,特别是对未及时获知域名更换的用户;最好方式是实现通配,动态的将旧域名某个内页跳转到新域名相同页面的URL,那如何用技术手段实现新旧内页URL之间的301跳转???
即:从domain1.com/content/20070808.html跳转到domain2.com/content/20070808.html,并使浏览器返回301代码
例如:
大旗网域名由chinabbs.com换成daqi.com
博客网域名由blogchina.com换成bokee.com
有兴趣或者有解决办法的程序员,请留下你的联系方式或者发表评论,一起探讨下关于URL重定向的相关问题。
感谢dawnh的提示,我有点恍然大悟,PHP下的实现方式(参考):
.htaccess文件代码如下(bloghuman.com的.htaccess如此设置):
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^bloghuman.com [nc]
rewriterule ^(.*)$ http://www.bloghuman.com/$1 [r=301,nc]
RewriteEngine on
rewritecond %{http_host} ^bloghuman.com [nc]
rewriterule ^(.*)$ http://www.bloghuman.com/$1 [r=301,nc]
注释1:如果用户访问http://bloghuman.com/,则跳转至http://www.bloghuman.com,且返回301状态码;当用户访问http://bloghuman.com/post/301.htm,则跳转至http://www.bloghuman.com/post/301.htm,并返回301状态码。
注释2:测试URL:http://www.wlxs.com.cn/,你可以访问http://www.wlxs.com.cn/post/301.htm
我在wlxs.com.cn下配置了.htaccess文件,使其301跳转至http://www.bloghuman.com/post/301.htm
我的.htaccess配置实现了由主域名(bloghuman.com)301跳转至二级域名(www.bloghuman.com);
结论:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^www.domain1.com [nc]
rewriterule ^(.*)$ http://www.domain2.com/$1 [r=301,nc]
RewriteEngine on
rewritecond %{http_host} ^www.domain1.com [nc]
rewriterule ^(.*)$ http://www.domain2.com/$1 [r=301,nc]
感谢shiny的反复提示,ASP脚本实现301跳转的方法:
<%
if request.ServerVariables("HTTP_HOST")="domain1.com" or request.ServerVariables("HTTP_HOST")="www.domain1.com" then
if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.domain2.com"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
Response.End
end if
%>
if request.ServerVariables("HTTP_HOST")="domain1.com" or request.ServerVariables("HTTP_HOST")="www.domain1.com" then
if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.domain2.com"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
Response.End
end if
%>
相关文章
利用Google高级搜索功能做SEO调研
AKCMS — 适合SEO的小型CMS(内部开发版已提供下载)
Google Sitelinks研究分析
Google要为百度谋福利?
回首2007展望2008
WordPress SEO Tips For Beginners
SEO之大腕篇
TechTarget网站优化(SEO)中的"Tag“化表现
远离自动产生的链接
转:王通的SEO培训内容
利用Google高级搜索功能做SEO调研
AKCMS — 适合SEO的小型CMS(内部开发版已提供下载)
Google Sitelinks研究分析
Google要为百度谋福利?
回首2007展望2008
WordPress SEO Tips For Beginners
SEO之大腕篇
TechTarget网站优化(SEO)中的"Tag“化表现
远离自动产生的链接
转:王通的SEO培训内容

Matt Cutts给Wordpress博客系统的SEO建议
WordPress SEO Tips For Beginners
2007/08/13 13:35 | by



我有另一个问题:如a.com和a.com/index.asp,都是一个主页,但后者PR2,前者PR0,我需要把后者跳转到前者,即不带index.asp的,请问如何跳呢……
我这里也有篇301跳转的,但没有找到解决方法:http://www.piaoyi.org/seo/...,请指教~
就是说要怎么操作呢。
忘了说了,万网的虚拟主机,所以IIS不能动
应该说linux下(似乎是LINUX的特权吧?)(包含JSP、PHP、静态HTML。。。。。)已经实现。
WIN下可以用IIS的URLREWRITE可以实现同样的效果,但是根据虚拟主机运营商的说法,这样会占用大量资源,所以不支持。。。
其他实现方法都依赖于脚本自身对301的实现,所以比较方便。
一般而言,脚本语言都有自身的重定向的语句,只是对于我们这些对程序一知半解的新手来说,有点困难,希望大家多多理解多多支持
有个SEO途中遇上的问题:
前期推aftea.cn,后来推aftea.com.cn
结果由于前面这个网址因为疏于更新,PR一直掉,推出新域名后很多页面被判定为复制网页。
后来我在首页上方加链接:南方电信|北方网通,
分别指向这两个网址,结果。。。。。发现旧域名下的旧索引数据出现在新域名下了。。。
谷歌是否有什么机制会把两个域名合并成一个站(或判定为同一个站并合并数据)。(注,IP和域名都是不同的,内容是完全一致的)
疑惑。。。。
这个发现也许对面临这种情况的站长有参考价值~
o(∩_∩)o...
而在HEAD里加301是很方便的,思路是
判断访问的HOST----->是旧域名------->读取、生成脚本的相对URL----->转向。
其实这是个很简单的程序,但是为什么搞SEO的大虾没几个会的~由此看到会程序对SEO的重要性。
对于绝大多数像我一样的个人站长而言,全能是良好而必要的素质:安全,程序,美工,SEO,配置。。。。。。
一、if request.ServerVariables("HTTP_HOST")="aftea.cn" or request.ServerVariables("HTTP_HOST")="
当发现客户是用旧域名来访问网站的,则进入转向流程
二、if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
当发现页面是含参数的,则加入“?”
发送转向的HTTP状态码301
三、Response.AddHeader "Location","http://www.aftea.com.cn"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
当不含参数时,变量P和REQUEST.ServerVariables都为空
当含有参数时,则生成被请求页的的相对URL。。。。这样就达到了一种效果:无论客户访问哪一页,都会自动转向到另一个页面的同一文件里且包含同一个参数。
举例:www.aftea.cn/go.asp?id=1383
会自动301到www.aftea.com.cn/go.asp?id=1383;
www.aftea.cn/xiaoshuo.asp会自动301到
www.aftea.com.cn/xiaoshuo.asp
是这个意思吧?
我发现重新修改发表的内容时,博客就会在"前加上斜杠,估计是为了防止跨站漏洞的出现~
一、if request.ServerVariables("HTTP_HOST")="aftea.cn" or request.ServerVariables("HTTP_HOST")="
当发现客户是用旧域名来访问网站的,则进入转向流程
二、if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
当发现页面是含参数的,则加入“?”
发送转向的HTTP状态码301
三、Response.AddHeader "Location","http://www.aftea.com.cn"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
当不含参数时,变量P和REQUEST.ServerVariables都为空
当含有参数时,则生成被请求页的的相对URL。。。。这样就达到了一种效果:无论客户访问哪一页,都会自动转向到另一个页面的同一文件里且包含同一个参数。
举例:http://www.aftea.cn/go.asp?id=1383
会自动301到http://www.aftea.com.cn/go.asp?id=1383;
http://www.aftea.cn/xiaoshuo.asp会自动301到
http://www.aftea.com.cn/xiaoshuo.asp
是这个意思吧?
我发现重新修改发表的内容时,博客就会在"前加上斜杠,估计是为了防止跨站漏洞的出现~