url重定向
定义:
重定向(Redirect)用于将用户从一个URL重新路由到另一个URL。重定向有很多种…301和302是最常见的两种。通常针对
HTML文档进行重定向,但通常也可能用在请求页面中的组件(图片,脚本等)时。实现重定向可能有很多不同的原因,包
括网站重新设计、跟踪流量、记录广告点击和建议记忆的URL等。
重定向的类型:
300 Multiple Choices :可选重定向,表示客户请求的资源已经被转向到另外的地址了,但是没有说明是否是永久重定向
还是临时重定向。
301 Moved Permancently :永久重定向,同上,但是这个状态会告知客户请求的资源已经永久性的存在在新的重定向的
URL上。
302 Moved Temporarily : 临时重定向,在HTTP1.1中状态描述是Found,这个和300一样,但是说明请求的资源临时被转
移到新的URL上,在以后可能会再次变动或者此URL会正常请求客户的连接。
303 See Other : 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过
GET提取(HTTP 1.1新)。
304 Not Modified : 并不真的是重定向 – 它用来响应条件GET请求,避免下载已经存在于浏览器缓存中的数据。
305 Use Proxy : 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
306 (废弃,不在使用)
307 Temporary Redirect : 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST
,即使它实际上只能在POST请求的应答是303时 才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几
个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只 能跟随对GET请求
的重定向。(HTTP 1.1新)
因为常见的重定向为301和302,所以下面重点说说这两种重定向对于搜索引擎的优化和实现方法。
对于搜索引擎的优化:
1、首先来说下301:301是永久性的,适用于网站域名或者网页存储目录永久性的更改的情况,这种永久性的重定向对于搜
索引擎无疑是比较友好的。
在搜索优化之中,301重定向往往还用于实现URL静态化。
2、再来说下302:302区别于301的永久性,它(302重定向)属于暂时性的转移,这种临时性的重定向适用于临时更换域名
或者目录名称等情况。
这种重定向因为是临时性质的,所以对搜索引擎的友好程度就不如301那么友好,请大家使用的时候还需慎重。
实现方法:
因为302可能会有URL规范化问题,其方法都是常用的作弊手法,如上所说对搜索引擎不是很友好,所以下面会以301为例。
首先说下301重定向的必要性:
当网页A用301重定向转到网页B时,搜索引擎可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网
页B当作唯一有效目标。好处是:
第一、没有网址规范化问题
第二、网页A的PR网页级别会传到网页B
第三、收录不会因为域名更换没有
其次301在各种环境下的实现:
1、IIS下301设置
Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择”资源的永久重定向”。
2、ASP下的301重定向代码
<%@ Language=VBScript %>
<% Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, “http://www.poloo.org” %>
3、ASP.Net下的301重定向代码
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”; Response.AddHeader
(“Location”,”http://www.poloo.org“);
}
</script>
4、PHP下的301重定向代码
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.poloo.org“); exit();
5、CGI Perl下的301重定向代码
$q = new CGI; print $q->redirect(“http://www.poloo.org/”);
6、JSP下的301重定向代码
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.poloo.org/” );
response.setHeader( “Connection”, “close” );
%>