301永久重定向讲解和设置方法
在HTTP协议中,使用三个数字代表HTTP协议状态。
HTTP状态代码是在Web服务器返回数据的第一行实现的,比如你访问http://.baidu./,百度的服务器会返回的数据第一行是HTTP/1.1 200 OK
这里就说明百度返回的状态是200,协议是HTTP/1.1,状态描述是OK。
大家都知道g.这个google的网址,这个网址会转跳到http://.google.上,当我们访问g.的时候第一行返回的是HTTP/1.1 301 Moved Permanently
说明状态是301,状态描述是Moved Permanently,直译为“永久转移”,这里g.用到的就是永久重定向。
大家会问,怎么看到这个“HTTP/1.1 200 OK”这样的状态,这里需要一个能够监控IE浏览器通讯的程序,我用的是HttpWatch 4.0 Professional 专业版,下载地址“http://link.silmoon./r/down_s4_11/HttpWatch.rar”,安装后从[查看(V)]-》[浏览器栏(E)]找到HttpWatch,之后会看到这个工具已经显示出来了,在此不多说这个程序怎么使用了。
简单介绍几个状态代码(更多信息可参考)
在1XX中,是Informational和实验性使用的协议,几乎根本不用,就此忽略。
200 OK表示请求已经接受,客户所需要的信息已经成功的返回给客户。
206 Partial Content部分内容,如果客户端请求的是较大的资源,比如下载,MP3,会被分段传送。此状态表示这是其中的一部分。
300 Multiple Choices可选重定向,表示客户请求的资源已经被转向到的地址了,没有说明是否是永久重定向还是临时重定向。
301 Moved Permanently永久重定向,同上,这个状态会告知客户请求的资源已经永久性的存在在新的重定向的URL上。
302 Moved Temporatily临时重定向,在HTTP1.1中状态描述是Found,这个和300一样,说明请求的资源临时被转移到新的URL上,在以后可能会变动或者此URL会正常请求客户的连接。
400 Bad Request坏的请求,这在IIS里常见,其表现为(Invalid Hostname)失败的主机头,其他的失败的坏请求都是此状态。
403 Forbidden禁止状态,此状态是明显的禁止用户和拒绝用户的请求!
404 Not Found请求的地址和资源没有找到。
500 Internal Server Error内部服务器错误。
503 Service Unavailable服务器不可用,表示Web服务器已经崩溃或者超载运行,此状态就是明确的告诉用户,现在服务器有问题。
什么是精确重定向?
当你访问http://.111./myPage.aspx想转向到http://.111./myPage.aspx这叫精确重定向,就是仅仅域名变了,后面的路径依旧存在,相反,就是不管访问那个页面,都重定向到一个新的指定的页面。
解释3xx状态
我们以301永久重定向为例。我们发请求给g.,看到HttpWatch的信息
以下是代码片段 HTTP/1.1 301 Moved Permanently Cache-Control: private, max-age=2592000 Content-Length: 235 Content-Type: text/html; charset=UTF-8 Date: Mon, 11 Jan 2010 13:58:44 GMT Expires: Mon, 11 Jan 2010 13:58:44 GMT Location: http://.google./webhp?source=g_ Server: gws X-XSS-Protection: 0 |
此状态明显说明301永久重定向,从定向到哪里呢??看狼蚁网站SEO优化有一个Location http://.google./webhp?source=g_,Location的意思是位置,一个3xx的请求必须包含Location字段信息,否则将不知道转向到哪里。
在程序中实现3xx状态
ASP
在ASP的编程中有一个方法或者说是函数可以控制状态行的字符,并且可以添加Location这样的字段。
以下是代码片段 <% Response.Status = 301 ‘表示状态切换成301 Response.AddHeader “Location”,”http://.baidu./” ‘在头中添加Location字段,其内容是百度的网址。 %> |
以下是代码片段(精确重定向) <% Response.Status = 301 ‘表示状态切换成301 Response.AddHeader “Location”,”http://.baidu./”&Request.ServerVariables(“HTTP_X_REWRITE_URL”) ‘在头中添加Location字段,其内容是百度的网址。 %> |
这是永久重定向的实现方法,有人说Response.Redirect也可以重定向,你最好用HttpWatch看看到底是不是301!
Request.ServerVariables(“HTTP_X_REWRITE_URL”)是ASP中获得请求路径的方法。
PHP和ASP一样,也是两步
以下是代码片段 <?php header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://.baidu./”); ?> |
以下是代码片段(精确重定向) <?php header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://.baidu./”.$_SERVER"REQUEST_URI"]); ?> |
在PHP中header()这个方法直接可以对HTTP头部信息进行操作,如果不写“header(“HTTP/1.1 301 Moved Permanently”); ”这个的话也可以转向,不过和ASP的Response.Redirect一样,状态不会是301而是300。
ASP.也是两步
以下是代码片段 <%@ Page Language=”C#” %> <% Response.Status = “HTTP/1.1 301 Moved Permanently”; Response.Headers.Add(“Location”, http://.baidu./); %> |
以下是代码片段(精确重定向) <%@ Page Language=”C#” %> <% Response.Status = “HTTP/1.1 301 Moved Permanently”; Response.Headers.Add(“Location”, “http://.baidu./”.Request.ServerVariables(“HTTP_X_REWRITE_URL”)); %> |
策略
要实现重定向,就要保证用户访问的所有地址都执行了上面的代码,如果有条件可以将所有请求Rewrite到一个这样的文件,如果不行,就想办法都要执行这个代码,其中有很多办法,比如dedecms无论访问什么地址都执行了mon.inc.php这个文件,大家就可以上面的代码放到这个文件中。
同一空间实现判断重定向,如果一个空间绑定了两个域名
http://.111.
http://.111.
如果用户访问的是http://.111./index.asp?page=2这样的网站重定向到http://.111./index.asp?page=2,在同一空间如何实现,这里是以ASP编程做的例子,如果想判断是的域名就进行转向,不是的域名就不转向可以通过编程方法实现判断
以下是代码片段(精确重定向) <% Domain = “.111.” ‘定义COM域名
If Request.ServerVariables(“SERVER_NAME”) <> Domain Then ‘如果请求的域名不是的域名 |
补充一下Apache 服务器可以直接在 .htaess 文件中实现 301 重定向。
长沙网站设计
- 如何自己建一个网站 自己想建个网站,怎么建
- 如何制作网站免费建站 创建网站免费注册
- html简单网页代码 html简单网页代码超链接
- dreamweaver网页制作 dreamweaver网页制作模板
- 上海网站建设 上海网站建设制作微信
- 如何制作网站和网页 如何制作一个网页
- html网页制作代码大全 端午节html网页制作代码大
- app开发公司 app开发公司前十名
- html网页制作 html网页制作文字居中
- app制作一个需要多少钱 请人制作一个app多少钱
- 成都网站制作 成都网站制作维护
- 百度建一个网站多少钱 百度做个公司网站要多少
- html+css网页制作成品 web网页制作成品css+javascrip
- html网页制作案例 html网页设计案例
- html+css网页制作成品 web网页制作成品css+javascrip
- 个人网站模板 个人网站模板HTML