对301、302的理解

来源:互联网 发布:sql数据库优化方案 编辑:程序博客网 时间:2024/06/08 13:52
301与302区别?
301状态码指的是网页永久性的转移到另外一个位置
302状态码指的是网页暂时转移到另外一个位置

302重定向和网址劫持(URL hijacking)的关系?
从定义来说,从网址A做一个302重定向到网址B时,服务器的隐含意思是网址A随时有可能改主意,
重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302重定向时,
一般只要去抓取目标网址就可以了,也就是说网址B。实际上如果搜索引擎在遇到302转向时,
百分之百的都抓取目标网址B的话,就不用担心URL劫持了。
问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。为什么呢?
比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,
甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不用户友好。
这时Google很有可能会仍然显示网址A。由于搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,
并不能像人一样的去准确判定哪一个网址更适当,这就造成了URL劫持的可能性。
也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,
出于某种原因,Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,
这种情况就叫做网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了。

如何实现301、302重定向?
301、302都是HTTP状态的码,都代表着某URL发生了转移,
不同之处在于:301代表永久性转移(Permanently Moved),302代表暂时性转移(Temporarily Moved)。
用htaccess做301重定向很不错,不过需要apache、nginx的rewrite模块支持。
php实现301、302重定向如下:
header("HTTP/1.1 301 Moved Permanently"); //默认为302
header("Location: http://www.baidu.com");
原创粉丝点击