ã€301跳转】如何实现两个域å内页之间的301跳转
问题:
如果一个网站拥有两个域å: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如æ¤è®¾ç½®ï¼‰ï¼š
注释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);
结论:
æ„Ÿè°¢shinyçš„åå¤æ示,ASP脚本实现301跳转的方法:
最后编辑: 郝聪 编辑于2007/12/20 09:23
如果一个网站拥有两个域å: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
%>
相关日志
PHP判æ–æ¥è·¯æ˜¯æ‰‹æœºç«¯è¿˜æ˜¯PCç«¯ï¼Œå¹¶æ ¹æ®ç»ˆç«¯é…ç½®ä¸åŒ301跳转页é¢
SEO项目分æžåŠè¿ä½œæµç¨‹
第五届Netconcepts SEO排行榜大会演讲PPT分享
百度æœç´¢ç»“æžœå›¾æ–‡æ ‡è¯†è§„åˆ™åˆ†æž
Flash网页SEO特殊优化ç–ç•¥
Wordpress SEOæ’件
æœæœSoSoæœç´¢å¼•æ“Žä¼˜åŒ–SEO规范
ã€SEO必备】百度蜘蛛IP段大全与æƒé‡è¯´æ˜Ž
社会化è´ç‰©åˆ†äº«ç½‘ç«™SEOç–ç•¥ç ”ç©¶
百度站长平å°â€œå¤–链工具â€ä¸Žâ€œæœç´¢å…³é”®è¯æŸ¥è¯¢â€åŠŸèƒ½è¯„测
PHP判æ–æ¥è·¯æ˜¯æ‰‹æœºç«¯è¿˜æ˜¯PCç«¯ï¼Œå¹¶æ ¹æ®ç»ˆç«¯é…ç½®ä¸åŒ301跳转页é¢
SEO项目分æžåŠè¿ä½œæµç¨‹
第五届Netconcepts SEO排行榜大会演讲PPT分享
百度æœç´¢ç»“æžœå›¾æ–‡æ ‡è¯†è§„åˆ™åˆ†æž
Flash网页SEO特殊优化ç–ç•¥
Wordpress SEOæ’件
æœæœSoSoæœç´¢å¼•æ“Žä¼˜åŒ–SEO规范
ã€SEO必备】百度蜘蛛IP段大全与æƒé‡è¯´æ˜Ž
社会化è´ç‰©åˆ†äº«ç½‘ç«™SEOç–ç•¥ç ”ç©¶
百度站长平å°â€œå¤–链工具â€ä¸Žâ€œæœç´¢å…³é”®è¯æŸ¥è¯¢â€åŠŸèƒ½è¯„测
最后编辑: 郝聪 编辑于2007/12/20 09:23
就是说è¦æ€Žä¹ˆæ“作呢。
忘了说了,万网的虚拟主机,所以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
是这个æ„æ€å§ï¼Ÿ
我å‘现é‡æ–°ä¿®æ”¹å‘表的内容时,åšå®¢å°±ä¼šåœ¨"å‰åŠ 上斜æ ,估计是为了防æ¢è·¨ç«™æ¼æ´žçš„出现~
这个是大致,一般写在APP_CODE目录里然åŽåœ¨global.asaxprotected void Application_BeginRequest(Object sender,EventArgs e)里调用,å¯ä»¥ç”¨åˆšæ‰çš„方法得到请求文件的路径,然åŽé‡å†™ã€‚
注æ„,è€é»‘çš„åšå®¢ä¼šåœ¨åŒå¼•å·å‰åŠ \
ASP.NET也是支æŒASPæ–¹å¼çš„æ·»åŠ HTTP头。
其实PHPä¹Ÿæ˜¯è¿™æ ·æ·»åŠ å¤´çš„ï¼Œè™½ç„¶å®žçŽ°åœ°ä¸æ˜¯å¾ˆå®Œç¾Žï¼Œä½†æ˜¯ç»å¯¹æ˜¯çµæ´»ã€é€šç”¨çš„。
以下是ASP.NET里的é‡å†™çš„调用方法的示例,å¯ä»¥æ ¹æ®è‡ªå·±çš„需求æ¥ä¿®æ”¹ã€‚
string URL=@\"/shiny/d*.aspx$\";
Regex regex = new Regex (URL,RegexOptions.IgnoreCase);
if(regex.IsMatch(HttpContext.Current.Request.Path))
{
Regex aregex=new Regex(@\"/shiny/(?<id>d*).aspx$\");
Match m=aregex.Match(HttpContext.Current.Request.Path);
HttpContext.Current.Response.Write(HttpContext.Current.Request.Path);
HttpContext.Current.RewritePath(regex.Replace(HttpContext.Current.Request.Path,\"/i.aspx?id=\"+m.Groups[\"id\"].Value));
}
“注æ„,è€é»‘çš„åšå®¢ä¼šåœ¨åŒå¼•å·å‰åŠ \â€
è¿™å¥è¯ä¸å¤ªæ˜Žç™½
asp.net2.0比较方便。
而ASP就比较痛苦了~~一般弄个虚拟主机都ä¸å…许。
刚刚ç¨ç¨æŠŠä»£ç å®Œå–„ä¸€ä¸‹ï¼Œä¸€èˆ¬åŠ åœ¨æ•°æ®åº“连接文件里就å¯ä»¥äº†ï¼Œè´´å‡ºæ¥ï¼š
<%
if request.ServerVariables("HTTP_HOST")="aftea.cn" or request.ServerVariables("HTTP_HOST")="www.aftea.cn" then
if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.aftea.com.cn"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
Response.End
end if
%>
效果演示:aftea.cn是我的旧域å,放弃ä¸ç”¨ï¼Œæ–°åŸŸå是aftea.com.cn
有问题请邮件dj#aftea.cn
但是是跳转首页,还得抽空对内页进行处ç†ã€‚
我的代ç 如下:(跳转到新域å首页)
<%
if request.ServerVariables("HTTP_HOST")="aftea.cn" or request.ServerVariables("HTTP_HOST")="www.aftea.cn" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.aftea.com.cn/"
Response.End
end if
%>
è”系邮件dj#aftea.cn
å¯ä»¥æä¾›ç»™ä½ ä»¬å®Œæ•´ç‰ˆæœ¬
http://sheawey.com/blog/baidu-preferred-domain.html
http://sheawey.com/blog/baidu-preferred-domain.html
å¯ä»¥æŽ¢è®¨ä¸€ä¸‹ã€‚
例如下é¢è¿™æ®µapache rewriting rule就是很典型的示范:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain1.com$ [NC]
RewriteRule ^(.*)$ http://domain2.com/$1 [R=301,L]