五种HTTP状态码全解及301与404状态码在网站优化中的应用
诺丁科技2023-06-300
“网站状态码即指HTTP状态码,是表示网页服务器超文本传输协议响应状态的三位数字代码,第一位数字分别代表了消息、成功、重定向、请求错误以及服务器错误五种状态,后两位数字则对类别的状态进行更加细致的分类说明,利用好301、302以及404状态码可以很好地解决网站改版及删除错误页面导致的网站SEO优化问题。”
在网站运营过程中网站改版或错误页面删除都将是重大的网站改动,这些改动往往会影响到大部分的网页排名甚至整个网站权重,而在改版调整前做好重定向设置及错误页面删除处理的配置,可以让这些重大调整对网站SEO优化效果的影响降到最低,此外在SEO日常工作中做网站日志分析也需要熟悉不同HTTP状态码所代表的含义。
当我们通过浏览器访问网站任何一个页面资源时,会由浏览器向网页所在服务器发出请求,服务器接收处理后返回一个包含HTTP状态码的信息头(server header)响应浏览器的请求,可通过浏览器F12进入调试模式,打开网络面板点击需要查看状态码的资源名称,然后点击标头即可查看请求URL路径、请求方式以及状态代码等信息。
消息类状态码(1XX)
消息类型的HTTP状态码为临时响应,表示请求已被接受需继续处理,如非特定试验测试条件下,服务器禁止向客户端发送1xx响应。
(1)100:Continue
该临时响应表示部分请求已经被服务器接收,客户端应当继续发送请求的剩余部分,如已完成请求可忽略该响应,并等待服务器的最终响应。
(2)101:Switching Protocols
服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求,有且只有在切换新协议更有利的情况下采取该措施。
(3)102:Processing
由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
HTTP请求成功状态码(2XX)
这一类型的HTTP状态码表示请求已成功被服务器接收、理解并接受。
(1)200:OK
表示所有请求已成功,响应头或数据体同时返回客户端。
(2)201-Created
请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location头信息返回。
(3)202:Accepted
服务器已接受请求但尚未处理,在异步操作的场合下,没有比发送这个状态码更方便的做法。
(4)203:Non-Authoritative Information
服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。
(5)204:No Content
服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。由于204响应被禁止包含任何消息体,因此它始终以消息头后的第一个空行结尾。
(6)205:Reset Content
服务器成功处理了请求,且没有返回任何内容,不同于204状态码的是205会重置文档视图,比如接受用户输入后立即重置表单,以便于用户能够重新进行数据录入。
(7)206:Partial Content
服务器已经成功处理了部分GET请求,比如FlashGet或者迅雷这类的HTTP下载工具,都是使用此类响应实现断点续传或者将一个大文档拆分并实现同时下载。
(8)207:Multi-Status
由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
重定向状态码(3XX)
这类HTTP状态码代表需要客户端采取进一步的操作才能完成请求,多用来重定向且后续的请求地址会在本次响应的Location域中指明。当且仅当后续的请求所使用的方法是GET或者HEAD时,浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求,但为了避免服务器和客户端不必要的资源消耗,按照HTTP/1.0版规范浏览器不应自动访问超过5次的重定向。
(1)300:Multiple Choices
被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息,用户或浏览器能够自行选择一个首选的地址进行重定向。
(2)301:Moved Permanently
被请求的资源已永久移动到新。
(3)302:Move Temporarily
请求的资源临时从不同的URI响应请求。
(4)303:See Other
对应当前请求的响应可以在另一个URL上被找到,而且客户端应当采用 GET 的方式访问那个资源,其目的主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
(5)304:Not Modified
如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
(6)305:Use Proxy
被请求的资源必须通过指定的代理才能被访问。
(7)306:Switch Proxy
在最新版的规范中,306状态码已经不再被使用。
(8)307:Temporary Redirect
请求的资源临时从不同的URL响应请求。
请求错误状态码(4XX)
这类的HTTP状态码代表了客户端可能发生了错误并影响服务器的处理。
(1)400:Bad Request
语义有误导致当前请求无法被服务器理解,或者请求参数有误。
(2)401:Unauthorized
当前请求需要用户验证。
(3)402:Payment Required
该状态码是为了将来可能的需求而预留的。
(4)403:Forbidden
服务器已经理解请求但拒绝执行它。
(5)404:Not Found
请求失败,请求所希望得到的资源未被在服务器上发现,出现这个错误的最有可能的原因是服务器端没有这个页面。
(6)405:Method Not Allowed
请求行中指定的请求方法不能被用于请求相应的资源。
(7)406:Not Acceptable
请求资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
(8)407:Proxy Authentication Required
与401响应类似,只不过客户端必须在代理服务器上进行身份验证,代理服务器必须返回一个Proxy-Authenticate用以进行身份询问。
(9)408:Request Timeout
请求超时,客户端可以再次提交这一请求而无需进行任何更改。
(10)409:Conflict
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
(11)410:Gone
被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
(12)411:Length Required
服务器拒绝在没有定义Content-Length头的情况下接受请求。
(13)412:Precondition Failed
服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
(14)413:Request Entity Too Large
服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
(15)414:Request-URL Too Long
请求的URL长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
(16)415:Unsupported Media Type
对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
(17)416:Requested Range Not Satisfiable
如果请求中包含了Range请求头,并且Range中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义If-Range请求头,那么服务器就应当返回416状态码。
(18)417:Expectation Failed
在请求头Expect中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect的内容无法被满足。
(19)418:I'm a teapot
(20)421:Misdirected Request
请求被指向到无法生成响应的服务器(比如由于连接重复使用)
(21)422:Unprocessable Entity
请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)
(22)423:Locked
当前资源被锁定。(RFC 4918 WebDAV)
(23)424:Failed Dependency
由于之前的某个请求发生的错误,导致当前请求失败。
(24)425:Too Early
状态码425 Too Early代表服务器不愿意冒风险来处理该请求,原因是处理该请求可能会被“重放”,从而造成潜在的重放攻击。
(25)426:Upgrade Required
客户端应当切换到TLS/1.0。
(26)449:Retry With
由微软扩展,代表请求应当在执行完适当的操作后进行重试。
(27)451:Unavailable For Legal Reasons
该请求因法律原因不可用。
服务器错误状态码(5XX或6XX)
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
(1)500:Internal Server Error
服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理,多见于服务器端的源代码出现错误时出现。
(2)501:Not Implemented
服务器不支持当前请求所需要的某个功能。
(3)502:Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
(4)503:Service Unavailable
由于临时的服务器维护或者过载,服务器当前无法处理请求。
(5)504:Gateway Timeout
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器收到响应,需要注意的是某些代理服务器在DNS查询超时(辅助服务器)会返回400或者500错误。
(6)505:HTTP Version Not Supported
服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。
(7)506:Variant Also Negotiates
由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误。
(8)507:Insufficient Storage
服务器无法存储完成请求所必须的内容。
(9)509:Bandwidth Limit Exceeded
服务器达到带宽限制,虽然不是一个官方的状态码,但是仍被约定成俗而广泛使用。
(10)510:Not Extended
获取资源所需要的策略并没有被满足。
(11)600:Unparseable Response Headers
源站没有返回响应头部,只返回实体内容。
301/302及404状态码在SEO优化中的应用
HTTP状态码尽管只有五种分类,但在每个大类下又进行了详细的说明,尤其是请求错误类状态码非常详尽,本文仅对所有的网站状态码进行简单罗列说明,如果想要深入学习了解可自行查阅资料,但对于网站SEO优化而言则需要熟悉重定向的301/302状态码以及请求错误类404状态码,了解其他状态码的释义可以更好的理解网站日志中搜索引擎蜘蛛的访问爬行情况。
其实对SEO而言主要的影响是发生URL的变化,比如网站改版时可先进行闭站保护同时选择重定向处理。如果新站继承了原站内容且新旧URL并为发生变化,则需要解除闭站保护就好,但如果发生变化则需要将旧URL重定向至新URL。对于404状态码主要用于页面资源丢失的情况,一般会在网站建设初期完成网站404页面的设置与配置,同时告诉普通用户和搜索引擎蜘蛛该页面资源缺失。