我遇到了网站http://huti.ru的问题。当试图在http://webmaster.yandex.ru/addurl.xml(Yandex - 俄罗斯搜索引擎)中添加任何页面时写道“服务器返回状态代码http 405(预期代码200)。”什么可以为brawusers和yandex履带行动者提供这样不同的行为? (谷歌索引像正常一样)
环境:tomcat,java 6
答案 0 :(得分:3)
您的服务器不允许HEAD请求。似乎机器人在实际GET之前首先尝试HEAD。
作为 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 状态:HEAD应该与GET相同,除了它永远不会返回消息体,而只返回特定请求的响应头。
注意:我做了一个简单的
HEAD / HTTP/1.0
请求。与HTTP/1.1
+ Host: huti.ru
相同。
答案 1 :(得分:1)
检查服务器日志,查找对Yandex请求的响应的实际内容。
HTTP 405是Method Not Allowed,如果用户代理使用了特定资源不支持的HTTP谓词,则通常会返回。
例如,使用Fiddler,我向http://huti.ru发出了多个请求,我收到了HEAD
,GET
和POST
的200个回复,但TRACE
获得了405分。可以想象,Yandex会在发出实际页面请求之前发出TRACE
或OPTIONS
,以确定页面是否存在。
注意:@smilingthax提到您的服务器在HEAD
上返回405。但是,从Fiddler发出以下请求对我有用:
HEAD http://huti.ru/ HTTP/1.1
Host: huti.ru
Proxy-Connection: keep-alive
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
因此,您的问题可能特定于具有特定标头的HEAD
请求。
答案 2 :(得分:0)
我认为405表示该页面已被编入索引。