飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

301重定向实现方法,及对网站优化的作用

Author:Flymorn Source:飘易博客
Categories:SEO技术 PostTime:2008-2-25 10:02:40
正 文:
   301重定向(也叫301转向,301跳转)对网站优化所起的作用是不可忽视的,尤其是针对SE(搜索引擎)处理网站页面权重的时候,更加显得重要。网站换了新域名,默认首页需要跳转等,从SEO角度来说,我们都建议使用301重定向,而不是JS跳转或META REFRESH或302转向,这些很容易引来SE的惩罚。

   什么是301重定向呢?

   301重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等。

   为什么要用301转向?

   网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。何必冒险呢。

   关于301转向和网址规范化问题,大家可以去阅读下ZAC写的文章。本文,仅仅讨论在ASP环境下,如何设置301重定向问题;其他语言亦可参考。

   我们知道,网站的首页一般有以下几种:

http://piaoyi.org
http://www.piaoyi.org
http://piaoyi.org/index.asp
http://www.piaoyi.org/index.asp
……

   很自然的,以上的这些网址形式都指向到了一个网站,如果在搜索引擎中都启用这些形式,那么,网页权重,PR都会分散到这几个网址上,虽然,它们都是一个网站,而这不是我们想要的结果。那么,如何将以上的首页形式都定向到自己想要的网址上呢,比如http://www.piaoyi.org,从而使得这些分散的网页权重,PR都集中到www.piaoyi.org上。这里就需要使用301永久重定向了。

   ASP语言下,我们需要在默认首页,如index.asp顶部最上方加入以下代码:

<%
Dim dm,sn
dm=Request.ServerVariables("Server_name")  '获取域名
'这里的3是指www的长度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", "http://www.piaoyi.org"
Response.End
end if
%>

   
   这里的代码是经过flymorn加工后的,您也可以根据实际需要对本代码进行适当的修改以适合你需求的样式。本代码自动校验没有输入www的,301跳转到www.piaoyi.org这个网址上,从而使得网页权重得到累加,达到SEO优化的目的。

   但这里出现一个问题,如果有链接指向到http://www.piaoyi.org/index.asp(比如站内链接),那么搜索引擎也同样会给这个网址形式加分,虽然index.asp是默认首页,但我们希望的是把所有权重都给与http://www.piaoyi.org这个形式。有人说,这两个形式不是都一样吗?不一样。比如:http://www.023ff.com的PR为0,而http://www.023ff.com/index.asp的PR为2。从这点可以看出,SE是给与是否有index.asp的网址形式以不同的权重的。而使用Request.ServerVariables("SCRIPT_NAME")或Request("url")获取到的后缀无论输入时是否带有index.asp都一律返回index.asp,从而导致无法判断,也无法使用301重定向,当然这是指仅asp语言环境。

   目前解决方法就是,利用js获取当前网址window.location.href,然后把这个当前网址写入cookies;asp读取这个cookies,从而判断网址中是否包含index.asp,如果包含,就使用301重定向。建议:在任何链接中避免有直接指向index.asp的形式,包括外链及内链,尤其是内链。这只是一个折中的方法。针对该问题,希望与各位高手一起讨论。如果您有其他解决的方法,请留下您的评论。

   利用js通过cookies给asp传递网址的代码如下:

<script language="javascript">
var url=window.location.href.toLowerCase(); //小写
document.cookie = "urlck" + "=" + escape(url);
</script>

<%
Dim sn
sn=request.cookies("urlck")  '获取后缀
response.cookies("urlck")=""  '清空cookies

if right(sn,11)="default.asp" then
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", "http://www.piaoyi.org"
Response.End
end if
%>

   但是很遗憾,如果这些网址形式不是实际上的人为输入,而是搜索引擎访问的结果,搜索引擎又是忽略JS的,也就是说,js里赋值的cookie并不能被SE识别,从而导致也无法使用301跳转。这个问题有待解决。

   其他语言下的301重定向:

1、Unix/Linux+Apache主机,在.htaccess文件中增加301转向指令,采用 mod_rewrite 技术,如:PHP代码

Options +FollowSymLinks     
RewriteEngine on     
RewriteCond %{HTTP_HOST} ^www.piaoyi.org [NC]     
RewriteRule ^(.*)$ http://piaoyi.org/$1 [L,R=301]  
 

2、Window+IIS主机,在服务器软件的系统管理员配置中设置,方法:

打开Internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”,在对话框中输入目标页面的地址,记得选中“资源的永久重定向”->“应用” 。

3、用PHP/ASP .NET实现301转向(HTML无法做301转向),方法如下:

1)用PHP实现

PHP代码
<? Header( "HTTP/1.1 301 Moved Permanently" );    
Header( "Location: http://piaoyi.org" );?>  
 

2)用ASP.NET实现

ASP/Visual Basic代码
<script runat="server">    
private void Page_Load(object sender, System.EventArgs e)    
{    
Response.Status = "301 Moved Permanently";    
Response.AddHeader("Location","http://piaoyi.org");    
}    
</script> 
  

   经过这些设置后,301转向应该可以配置OK啦,如果想检查一下是否正确,则可以使用网上提供Server Header检查工具,如Check Server Headers Tool - HTTP Status Codes Checker

   用以上检测http状态码工具,可以做个简单的检查,如检查http://023ff.com,返回的结果如下:

#1 Server Response: http://023ff.com
HTTP Status Code: HTTP/1.1 301 Moved Permanently
Connection: close
Date: Mon, 25 Feb 2008 01:54:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://www.023ff.com
Content-Length: 0
Content-Type: text/html
Set-Cookie: ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN; path=/
Cache-control: private
Redirect Target: http://www.023ff.com

#2 Server Response: http://www.023ff.com
HTTP Status Code: HTTP/1.1 200 OK
Connection: close
Date: Mon, 25 Feb 2008 01:54:13 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 29330
Content-Type: text/html
Set-Cookie: ASPSESSIONIDACBCSBDR=GCJELLLAECPBADKMADAJOBLC; path=/
Cache-control: private

   注意以上返回的结果中第二行“HTTP Status Code: HTTP/1.1 301 Moved Permanently”,说明这个网址采用了301永久重定向功能了,设置成功。如果您对本文有任何看法,欢迎留下您的评论,以便我们一起探讨。
作者:Flymorn
来源:飘易博客
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:静态页面利用JS读取cookies记住用户信息
下一篇:Feedsky网站首页再次打不开了
91条评论 “301重定向实现方法,及对网站优化的作用”
2008-2-25 11:50:02
文章很全,要找的资料都可以找到,支持下。
2008-2-26 0:09:04
嗯,学到一些东东了,不过,代码部分就。。。
2008-3-8 11:34:23
请教下飘易,<%
Dim dm,sn
dm=Request.ServerVariables("Server_name")  '获取域名
'这里的3是指www的长度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", "http://www.piaoyi.org"
Response.End
end if
%>  以上这段代码对内页起不了作用怎么办?就是首页虽然可以成功实现301重定向,但是换到内页还是没实现具体页面的跳转,如果连内页也想实现这样的301重定向,有什么办法吗? 谢谢
4 Flymorn
2008-3-8 11:58:58
小白,对于内页同样的方法,在页面顶部放入上述代码,比如用户访问的路径是http://piaoyi.org/show/at.asp?id=110,同样没有www头,自动301跳转到带www的相应地址。
当然,要先获取这个相应地址;这里有一个小操作,可获取当前地址:
<%
'============================================
'获取当前Url参数的函数
Function GetUrl()
  Dim ScriptAddress,Servername,qs
  ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))
  Servername = CStr(Request.ServerVariables("Server_Name"))
  qs=Request.QueryString
  if qs<>"" then
  GetUrl ="http://"& Servername & ScriptAddress &"?"&qs
  else
  GetUrl ="http://"& Servername & ScriptAddress
  end if
End Function
'============================================
%>
再经过适当加工就OK了。
2008-3-8 12:47:28
哇 呵呵 飘易真是太热心了,发出提问没多久就回复,谢谢 谢谢~~ 还想请教下,那您的意思是不是说每个具体的ASP页面要想实现301重定向都要在当前页面加以上代码是吗?另外不好意思 因为本人对ASP代码编写并不熟悉,麻烦飘易帮忙详细说说好像要实现这样:http://piaoyi.org/show/at.asp?id=110重定向到http://www.piaoyi.org/show/at.asp?id=110应该怎么具体加入您上面说的调用函数呢?
6 Flymorn
2008-3-8 12:53:54
to小白,希望实现301跳转的页面都要加上这段代码;
不过你可以把这段代码放入一个公用文件里,用include包含。
其实方法已经出来了,完整的代码如下:
<%
Dim dm,sn
dm=Request.ServerVariables("Server_name")  '获取域名
'这里的3是指www的长度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", GetUrl()
Response.End
end if

'获取当前Url参数的函数
Function GetUrl()
  Dim ScriptAddress,Servername,qs
  ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))
  Servername = CStr(Request.ServerVariables("Server_Name"))
  qs=Request.QueryString
  if qs<>"" then
  GetUrl ="http://www."& Servername & ScriptAddress &"?"&qs
  else
  GetUrl ="http://www."& Servername & ScriptAddress
  end if
End Function
%>
2008-3-8 13:01:14
谢谢飘易~~~ 一直支持您
8 小笨蛋
2008-3-18 13:12:18
谢谢,非常支持,今天让我学到了不少,要找的终于找到了.
9 余飞
2008-4-4 14:56:08
您好,我原来是多个域名在绑定在同一个站,网站都是静态页面的。现在我用url转向把其它域名都转到一个域名上,那要怎么实现内页的跳转。就是我想把其它域名的内页也跳转到这个域名的内页,比如:http://www.abc.com/111.htm转到http://www.def.com/111.html
谢谢!
10 Flymorn
2008-4-4 17:27:36
余飞,静态页面无法用程序实现301跳转,需要根据服务器设置,如IIS的重定向到URL,Apache中.htaccess设置都可以实现。
11 余飞
2008-4-4 17:51:57
您好,我是其它域名用url转发到同一个域名上的,用IIS的重定向好像不行,不知道怎么回事
12 Flymorn
2008-4-4 23:13:12
url转发和301跳转根本不是一个概念了,如果你有主机的完全控制权好办,如果你是虚拟主机基本没望了。
13 余飞
2008-4-5 13:04:49
谢谢飘易的耐心解答!
我有主机的完全控制权,那我应该要怎么做呢?
是两个域名都要绑定到同一个IP上吗?
14 Flymorn
2008-4-5 15:41:39
并不是两个域名都要绑定到同一个IP上,请仔细阅读本文“其他语言下的301重定向”的第二种方法。
15 余飞
2008-4-6 10:32:12
您好,我就是用win2003+iis打开Internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”,在对话框中输入目标页面的地址,记得选中“资源的永久重定向”->“应用” 。

我是这样:打开IIS的www.123.net目录下的的a.html重定向http://www.123.net/a.html,选择“资源的永久重定向”->“应用”。
可是打开其它域名下的那个内页,比如http://www.456.cn/a.htm,还是出现404,不知道怎么回事?
16 Flymorn
2008-4-6 12:19:31
余飞:首先你要保证这两个域名下的页面都存在;其次,重定向到里面的url才是你要跳转的目标;
不过看你的回复,好像搞反了。
应该这样吧:
打开IIS的www.123.net目录下的的a.html重定向http://www.456.net/a.html,选择“资源的永久重定向”->“应用”。
然后,你访问http://www.123.net/a.html,此时才是301跳转到http://www.456.net/a.html
17 Flymorn
2008-4-6 12:28:54
其实,鉴于你以前是多个域名在绑定在同一个站,我觉的没有必要把所有的静态页都301跳转。
推荐解决方案:
把所有非主要域名外的域名都解析到另一个新目录,在这个新目录上用301跳转到主要域名上。
18 lingqidian
2008-4-25 14:14:26
您好,我现在有个新站,想把他的一个页面定向的原来的老域名上,不知道怎么实现,一直不成功。
希望能得到解答。
19 Flymorn
2008-4-25 14:29:47
to:lingqidian,你的问题太笼统了,没搞懂什么意思:(
20 cayman
2008-4-30 20:54:47
我是用win系统的,ASP的,遇到上面的问题,就是没办法直接转向URL,,后面都自动加了INDEX.asp的,不知有没有新的办法,我是直接把两个域名绑向同一个主机的
21 cayman
2008-5-1 18:26:45
您好,,,现在我是要开了一个空间,,直接在2S那边作301,不过我老站就留一个首页的页面,,这样子会不会有影响
22 Flymorn
2008-5-1 23:07:24
把有权重的网页用301转向,其他的可以不必太在意;
老站的首页也用301转到新的首页。
2008-5-8 2:42:54
没想到还这么复杂!
24 shijie39388@126.com
2008-7-25 9:40:47
您好!我想问个问题
那假如网站是生成静态了的,用的是ASP,那它要301转向吗?我是租用的服务器
那假如要的话,是不是只要在index.asp的顶部加入转向代码
 回复邮箱:shijie39388@126.com谢谢了飘哥
25 shijie39388@126.com
2008-7-25 9:46:07
对于新手
比较有指导性质
26 shijie39388@126.com
2008-7-25 10:40:24
我没明白 cayman说的意思。。。呵呵。
27 flymorn
2008-7-25 11:20:54
生成了静态html的网页是无法通过程序实现301转向的。
28 yongheng
2008-7-29 12:22:57
请教Flymorn一个问题,我若要把http://www.piaoyi.org/index.asp重定向到http://www.piaoyi.org/应该要怎么设置呢?谢谢~
29 孙运坤
2008-9-22 9:37:29
我帮楼上回答下吧,你这种情况有两种解决方法,最简单的是在IIS中设置跳转,参考回复的第16条。
复杂一点的就参考楼主的主贴讲解,先用函数判断,然后在文件中加入301的代码
30 iori
2008-12-25 16:46:33
你好,我想问下,页面内做两次301转向,会被认为是作弊吗? 
我的空间绑定了两个域名。.com和.cn的域名都绑在了一个空间,主要用.com的域名。
比如我index.asp里面代码, 先是用301转向实现把空间绑定的其他域名(.cn)转向到.com域名上,然后再用301转向把.com的首页转向到index.htm上。 因为我网站的实际首页是index.htm  因为htm文件没法做301转向,所以用index.asp先帮转了一下。

再问一下,我的两个域名一个空间的这种情况,是用上面的方法好,还是直接在.cn的域名管理内,做dns解析设置rul转向直接指向.com,而不绑空间。这两种方法哪个合适?或者飘易老师你有没有更好的解决办法?

-----\
两个方法都可以。
31 5jun
2009-4-8 16:08:27
很热心的博主,找到要用的代码了,谢谢!
32 54gh
2009-4-9 13:56:07
我用的是合租的服务器,只能通过加代码来实现301.
我想请问博主,我的网站是www.54gh.com,现在百度把54gh.com都做为首页收录了,这样似乎会分散权重吧?
如何用PHP代码实现输入域名54gh.com,重定向到www.54gh.com这个域名呢?

我在网上查到,如果用:
<? 
Header( "HTTP/1.1 301 Moved Permanently" ) ;
Header( "Location: http://www.54gh.com" );
?>

就成循环跳转了,要进行条件判断,但是我不会写PHP代码,麻烦博主帮我写下,谢谢!

=======##
flymorn回:先用 $_SERVER['SERVER_NAME'] 获取域名,然后用 strpos 判定是否包含 www,不包含则301
我刚建站时,虚拟主机自动分配了一个三级域名:joybar.dns87.zwidc.com 。由于网站管理系统开始总是自动获取当前地址joybar.dns87.zwidc.com 。sitemap中也是此地址。过一段时间后才把它成功改成了www.joybar.net.cn 。 发现joybar.dns87.zwidc.com还在不断收录,而且 收录的多,而www.joybar.net.cn 的不多,总数还在减少。现在我该怎么办才对google最友好,对网站最有效?这是不是相当于两个网站?是不是要进行301重定向?重定向后是不是应该将 joybar.dns87.zwidc.com 删掉?
34 flymorn
2009-5-18 21:23:53
TO 33楼:采取301跳转,把 joybar.dns87.zwidc.com 这个域名下的内容全部采用301 跳到 www.joybar.net.cn下对应的页面。重定向后短期(至少3个月)内不要删 joybar.dns87.zwidc.com 。
2009-5-19 6:48:03
谢谢解答,但还有问题。
我是虚拟主机,空间商说不能进行301重定向。请问程序上如何实现?我是asp,但生成了html

------------------------##
flymorn回复:
虚拟主机 而且还生成了html ,估计还是iis主机,这样,就无法进行301了。放弃吧。
2009-5-19 10:26:11
谢谢,看样子只有忍痛删除旧域名了
2009-10-1 12:13:19
到底用那个PHP 代码是不是就可以了啊/??


用的是虚拟机。
2009-10-4 18:42:18
好东西,学习啦,谢谢
2009-11-4 11:13:39
我用的是dedecms建站系统,想把spgirls.cn 通过301 重定向到 www.spgirls.cn,但是不知道怎么来设置。
    还有个问题就是http://wanneng003.host.zw78.com/ 也能进入网站 怎样设置点击http://wanneng003.host.zw78.com/的时候就直接跳到www.spgirls.cn啊?http://wanneng003.host.zw78.com/害的搜索引擎一直不收录www.spgirls.cn。我的空间是免费的wanneng003.host.zw78.com是空间商绑定的 我就想当输入wanneng003.host.zw78.com的时候能给跳转到www.spgirls.cn上 
    麻烦大哥教教我啊!我不是很懂!~~~~(>_<)~~~~ 
2009-12-2 15:56:16
不知道用js跳转到另外一个相同的页面会不会被引擎是作弊呢,就是让原域名内页也跳转到新域名的相同内页。
41 flymorn
2009-12-3 19:30:18
回复:40 猫哥:不要用js跳转,因为搜索引擎忽略js。
42 菜鸟来了
2010-1-3 4:58:48
我看了下上面的 内容,我按照提示 把 不带WWW的转到了 带WWW的上面。

但是我现在遇到了一个问题,我的 不带WWW 的 也就是 178TASK.COM 比WWW.178TASK.COM 快照新。

所以我想把 带 WWW 的 定向 到 不带 WWW 的上面 该如何操作。

我不懂代码。

谢谢了
2010-1-6 12:40:12
您好,本人才疏学浅,看的不是很明白。请教一下,我想把http://www.banzuren.cn重定向到http://www.banzhuren.info该怎么做呢?PHP和生成html时有什么不同?感谢指导。
2010-1-23 19:14:19
您好,我的网站用的是虚拟主机,我现在买了两个虚拟空间,将带www和不带www的域名分别绑定在不同的空间,然后在不带www的域名下用ASP页面做了301重定向到带www的域名,现在谷歌百度上的搜索结果差不多都转过来了,但是有个很头疼的问题,www.itfree.com.cn 和itfree.com.cn 在百度谷歌site的结果中,www.itfree.com.cn不在第一了!排第一的是www.itfree.com.cn/index.html,在谷歌中直接没有了www.itfree.com.cn只有www.itfree.com.cn/index.html ,好像是301出了问题了,怎么办,我现在主要想把权重集中到www.itfree.com.cn。另外www.itfree.com.cn现在默认打开的页面是index.html,做的是全站静态化。希望热心的飘易先生能帮我看下,提出一点建议,看如何挽救我的网站。您加下我QQ:243204013 说您是飘易,感激不尽了!
45 flymorn
2010-1-23 21:47:31
回44 好烦恼:你的301没有问题,关键是你的站内链接几乎全部指向了www.itfree.com.cn/index.html,请修改内部链接为 www.itfree.com.cn/ 后看结果。
2010-1-29 13:32:47
飘逸您好,看到了您在这里对大家的解答,小弟非常敬重。在此也有一个问题想要请教。
我的网站www.tx0579.com,之前因为严打的原因做错了一次301,把www.tx0579.com给做到www1.tx0579.com:888上面去了。
是IDC给做的,现在网站恢复运行后,带www的域名始终难以跟上快照,而tx0579.com则有正常更新,因此我想把tx0579.com做301到www.tx0579.com,用的是以下PHP代码:
首页index.php加入了<?php include("301.inc.php"); //301 Redirect ?>
然后新建了一个文档命名为301.inc.php

<?php   
$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if($the_host !== 'www.tx0579.com')
{
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: http://www.tx0579.com'.$request_uri);
}
?>

在浏览器输入tx0579.com之后,发现页面并不是跳转到www.tx0579.com,而是定向到www.tx0579.com/index.php
请问这段代码可否完善,如果按照目前这个状况,会不会对SEO产生不利影响?

非常感谢您的热情解答。希望得到您的帮助。谢谢!
47 flymorn
2010-1-29 18:36:28
回复:46 万紫千红:
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.tx0579.com'.$request_uri);
这段代码改成:
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.tx0579.com/');
2010-2-4 19:09:20
朋友.你好.我想请问你一下.怎么可以实现html重定向啊?我的网站用IIS上的重定向功能要出现死循环.如果网站属于一个网站绑定2个域名,2个域名的根目录为同一个,那么,就会行成死循环。请问一下.你知道怎么处理吗?谢谢.
2010-3-22 17:25:46
我的www.ak6666.cn 跳转到了 www.akcssf.com 经过两个月,权重还是不能够完全转移。不知道怎么办
50 第一枪
2010-4-8 12:40:56
你好,飘易!我的站www.diyiqiang.com  在去年10下旬左右在百度就慢慢输入越来越少,到后面就没有输入了,在这之前都很好,并且很多关键词都在第一页。今年有朋友反映说进我的站,有病毒警告,我就看代码,里面被挂了私服之类的。在网上朋友的建议下,3月我换了源码,把以前的源码(ASP的)撤了,用了PHP的,并且也解析了不带www的域名(以前一直没解析不带WWW的域名),但到现在都一个多月了,百度还是没带www的输入,而不带的到是有了。请问我应该如何做才能使得百度重新输入带WWW的域名。
51 Flymorn
2010-4-8 16:22:34
回 50 第一枪:
你的网站是成、人用品网站,一,百度最近打压该类网站,为自家的有啊造势;二,该类产品站内容单调、重复性高,介绍都一样,即没有原创性内容;三,你的主机是放在美国,这样的访问速度很慢,这也是百度对你降权的原因之一;四,你随意更换源码,这是做站的大忌;五,百度已对你的站降权处理,建议更换域名。
52 nana
2010-4-14 22:30:40
找了两个星期了,我的DZ程序,这个办法管用
首页index.php加入了<?php include("301.inc.php"); //301 Redirect ?>
然后新建了一个文档命名为301.inc.php

<?php   
$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if($the_host !== 'www.tx0579.com')
{
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: http://www.tx0579.com'.$request_uri);
}
?>
2010-4-23 11:15:48
谢谢博主了,我就是学了这里的东西,把自己的站301做好了。
2010-4-30 13:15:06
不用这么复杂,只要有重定向功能的主机面板就可以了.比如winiis
2010-8-9 22:27:20
飘易,你好。我想将www.ck020.com/mzyjh/这个网站转移到http://mzyjh.5w5w.info/,我用了301重定向。代码如下:
<%
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location","http://mzyjh.5w5w.info/" 
Response.End
%>
结果我再次输入www.ck020.com/mzyjh/ 时能成功转向到http://mzyjh.5w5w.info/ 问题是,http://www.ck020.com/mzyjh/file/huigu.html 这个网页被搜搜收录了,我点击搜搜关于该ck020……的结果,还是转移到http://www.ck020.com/mzyjh/file/huigu.html 这个页面。请问该怎样做,才能让所有的页面都转移到http://mzyjh.5w5w.info/ 要不要每个页面都做重定向?
2010-8-18 10:07:28
楼主的信息非常实用,也是我一直在寻找的,感谢先。

不过我的问题比较麻烦,是整站程序更换后的301操作问题。我之前程序用新云ASP ACCESS,初做站时选的,做到后来发现这程序多少不够用,就想更换PHP程序。现在困惑是如更换程序,免不了要改变url,如何通过301把以前网页权重传导到新网页?
这个问题没考虑好,一直不敢换程序,楼主能否不吝赐教?
57 飘易
2010-8-18 11:02:09
55 王智杰:
你好。对于huigu.html 这样的静态页面,如果仅从程序上无法实现301跳转,需要服务器权限,利用url重写规则,如 apache 的 rewrite 功能。
58 飘易
2010-8-18 11:03:46
56 武陵投资网:
你好。你的问题和你楼上的王智杰类似,首页可以很容易的实现301跳转,但内页比如 .html 需要服务器权限。
2010-8-20 23:06:28
飘易,你好!
今年8月1日,用ASP做了一个网站,发觉有点慢,美国空间,于是,8月3号改成了PHP帝国的,8月5日,百度收录了不带WWW的首页,8月20日,又收录了不带WWW的页面60多页,全部是以前ASP的页面,带WWW的首页至今没收录,我现在应该怎么办?
做301转向可以吗?具体应该怎么操作?谢谢!
2010-8-20 23:09:33
补充一下,主机是WINDOWS系统!
61 飘易
2010-8-21 11:14:32
59 jjtps:
你好。因为是新站,没有什么权重积累,你现在把不带www的首页301 到 www的首页即可,百度反应有点慢,等上一个月吧。
2010-8-21 12:26:27
我的网站首页是:index.html静态页,系统是帝国CMS,PHP的,下面的这段代码:
PHP代码
<? Header( "HTTP/1.1 301 Moved Permanently" );    
Header( "Location: http://piaoyi.org" );?>  
如何操作?是放在首页的头部吗?请指教!谢谢!
2010-8-21 13:12:55
飘易,你好:
下面是我操作的方法,你看可以吗?
1、我的站默认首页是:index.html,也是优先的,
2、我在根目录下新建了一个:index.php,然后,后台设置PHP优先于html
3、在index.php文件里放上代码:<?
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://www.jjtps.com/index.html");
exit();
?>
4、这样定向301,可以吗?
谢谢!
64 飘易
2010-8-21 19:42:20
jjtps:
你好。估计你没有服务器权限,html的静态页面是无法301转向的,windows主机可能无法设置.htaccess,
这样操作吧:
把index.php设为优先后,index.php顶部加入
<?php
//301跳转
$the_host = $_SERVER['HTTP_HOST'];
if($the_host !== 'www.piaoyi.org'){
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.piaoyi.org/');
}
?>
2010-8-22 9:58:20
飘易,你好!
可是我的首页是静态的HTML呀!怎么改成PHP的呢?
66 飘易
2010-8-24 19:01:40
jjtps:
你好,所以你需要把你的首页由html改成php后再来实现 301 跳转。
2010-8-24 20:06:31
已按你的方法进行了操作,太谢谢你了!
2010-8-28 17:18:38
百度已收录带WWW的首页,谢谢飘易!
2010-8-30 9:41:09
很全啊。。谢谢博主了~
2010-9-1 0:26:26
学习,正好用上。谢谢分享!
2010-9-25 10:28:51
<?php
//301跳转
$the_host = $_SERVER['HTTP_HOST'];
if($the_host !== 'www.ku8a.cn'){
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ku8a.cn/');
}
?>

怎么只能跳到首页呢? 跳转不了详细页面
72 四楼的住户
2010-12-23 21:22:28
找了很多资料,这个最实用。严重感谢楼主。
在动手之前,想先确认一下,
我想将输入abc.com的访客们自动跳转到www.abc.com
是加入这个代码吗?
<? Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: http://abc.com" );?>
这个代码记事本加在哪个目录里呢?
谢谢。
73 飘易
2010-12-24 1:04:49
71楼的,
这个代码仅跳首页。
74 飘易
2010-12-24 1:05:13
72楼的 四楼的住户:
你好,WINDOWS,PHP空间,应该不支持 apache 的重写功能。
你可以使用php代码:
<?php
//301跳转
$the_host = $_SERVER['HTTP_HOST'];
if($the_host !== 'www.xxx.cn'){
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.xxx.cn/');
}
?>
2011-3-6 16:48:08
学习一下,找了很久了支持楼主
2011-12-8 13:10:47
博主你好。请教一个关于301的问题
asp程序的网站生成伪静态!没有服务器管理权限。改怎么设置301啊!另外我找了一段代码
<script language=javascript>
if (document.domain =='hycxst.com')
    this.location = " http://www.hycxst.com"   this.location.pathname   this.location.search;
加在index_cn顶部,输入不带w也能跳转到带w的 ,这个算301吗?谢谢
77 冯生
2012-3-3 10:35:20
请教下飘易
完整的代码如下:
<%
Dim dm,sn
dm=Request.ServerVariables("Server_name")  '获取域名
'这里的3是指www的长度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", GetUrl()
Response.End
end if

'获取当前Url参数的函数
Function GetUrl()
  Dim ScriptAddress,Servername,qs
  ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))
  Servername = CStr(Request.ServerVariables("Server_Name"))
  qs=Request.QueryString
  if qs<>"" then
  GetUrl ="http://www."& Servername & ScriptAddress &"?"&qs
  else
  GetUrl ="http://www."& Servername & ScriptAddress
  end if
End Function
%>

以上我试了可以!但若我有两个域名!我要全转到一个一个域名上怎理呀!
就相当于这个网站绑了两个域名,例如使用[url]www.1.com/a.html[/url]和[url]www.2.com/a.html[/url]访问都是同一个页面一样,但是不同的是如果我输入网址[url]www.1.com/a.html[/url]就直接转跳到[url]www.2.com/a.html[/url],其他的所有页面也都要实现这样的自动转跳,有没有什么好的办法啊
78 飘易
2012-3-3 11:25:13
冯生:你好,win主机下静态页面无法从代码层面实现跳转,如果是php,可以利用htaccess规则跳转。
79 冯生
2012-3-3 11:36:48
飘易
我的是ASP的!
80 冯生
2012-3-3 13:41:26
若我的三个域名!我要三个全转到其中一个域名,包内页也一样!
就相当于这个网站绑了两个域名,例如使用[url]www.1.com/a.asp[/url]和[url]www.2.com/a.asp[/url]访问都是同一个页面一样,但是不同的是如果我输入网址[url]www.1.com/a.asp[/url]就直接转跳到[url]www.2.com/a.asp[/url],其他的所有页面也都要实现这样的自动转跳,有没有什么好的办法啊
81 冯生
2012-3-3 14:18:52
飘易
您有QQ吗?可加我一下:23132191
82 冯生
2012-3-5 9:01:08
我在等...
更正,网站为ASP的

以上我试了可以!但若我有两个域名!我要全转到一个域名上怎理呀!
就相当于这个网站绑了两个域名,例如使用[url]www.1.com/a.asp[/url]和[url]www.2.com/a.asp[/url]访问都是同一个页面一样,但是不同的是如果我输入网址[url]www.1.com/a.asp[/url]就直接转跳到[url]www.2.com/a.asp[/url],其他的所有页面也都要实现这样的自动转跳,有没有什么好的办法啊
83 飘易
2012-3-5 16:28:01
冯生:
我明白你的意思。asp网站无法从代码层面实现这样的跳转,需要你有服务器权限。给iis安装ISAPI_Rewrite或IIRF免费开源的URL伪静态重写插件:http://www.piaoyi.org/network/IIRF-ISAPI-Rewriting-Filter.html
84 感谢博主
2013-6-28 1:17:52
首先对你的宝贵知识经验的分享表示感谢,按照你的引导,我已基本完成了301的定向,但是出现一个问题,在我定向以前,譬如我的网址是www.XXX.com,当我定位以后访问的时候就变成了www.XXX.com/index.html,而且xxx.com的访问定向到了www.xxx.com/index.html而不是定向到www.XXX.com上,请问二者之间有差异吗?担心影响SEO优化的问题,所以请您告知下如何解决。我的做法如下:

<?php   
$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
if($the_host !== 'www.xxx.com')
{
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: http://www.xxx.com');
}
?>
85 飘易
2013-6-28 15:35:02
楼上的朋友:
“定向到了www.xxx.com/index.html而不是定向到www.XXX.com上 ”这个问题应该是服务器设置问题导致的,
你可以使用http状态码查询 www.XXX.com,这里应该有一个302或301跳转 到了 www.xxx.com/index.html。

尝试
header('Location: http://www.xxx.com');
改成
header('Location: http://www.xxx.com/');
86 mygifttrade
2013-8-17 20:47:59
请问楼主,
-------------------------------------------------------
 $the_host = $_SERVER['HTTP_HOST'];//取得域名
 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面部分
 if($the_host !== 'www.abc.com')//判断域名,这里是否可以填写为泛域名如*.abc.com,试了下不生效。
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: http://www.abc.com/404b.htm'.$request_uri);//跳转
}
-------------------------------------------------------------

这段代码,本身没问题。但我想 if($the_host !== '*.xxxx.com')//  这里填写为泛域名,可是不生效,请问怎么办?因为服务器上有空主机头,我想预防别人域名解析到我的服务器上,但是自己的二级域名还是希望可以访问。

拜托了谢谢!
87 mygifttrade
2013-8-17 20:49:37
*.abc.com 这里是不能固定的。所以没法固定填写。请问解决办法?感谢
2013-9-15 11:43:10
我是windows主机,discuz程序,试了网上的很多方法,都不能实现301,最多只能302,请求飘易支援
详情:
有两个域名,旧的是www.eqdns.com,想让他301跳转到新域名www.caibaobbs.com,试过用httpd.ini能实现302,但是不是301,新域名一直没有更新收录文章,怕被惩罚。
试了您这里及各网友的回复,还是不能实现。到底是神马问题呢
89 飘易
2013-9-16 8:49:49
to: feilang:
PHP直接通过代码实现:
PHP代码
<?PHP
Header( "HTTP/1.1 301 Moved Permanently" );    
Header( "Location: http://www.caibaobbs.com/" );
?>
2014-1-20 22:18:12
关于$request_uri获取的地址后面部分,首先,我站有内页属于伪静态路径,在使用的时候会301到动态地址,我想问问,如何让$request_uri获取到的后面地址不是动态,而是伪静态路径?
91 zero焛
2014-12-9 22:24:54
那现在asp网站   /index.html和 /index.asp  还是没有很好的解决办法了,是这样麽
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有