在网站从每个主要搜索引擎的搜索结果中消失几个月后,我终于找到了可能的原因。
我使用WebBug来调查服务器头。如果请求是HEAD或GET,请查看差异。
HEAD发送数据:
HEAD / HTTP/1.1
Host: www.attu.it
Connection: close
Accept: */*
User-Agent: WebBug/5.0
HEAD收到的数据:
HTTP/1.1 403 Forbidden
Date: Tue, 10 Aug 2010 23:01:00 GMT
Server: Apache/2.2
Connection: close
Content-Type: text/html; charset=iso-8859-1
获取已发送数据
GET / HTTP/1.1
Host: www.attu.it
Connection: close
Accept: */*
User-Agent: WebBug/5.0
GET收到的数据:
HTTP/1.1 200 OK
Date: Tue, 10 Aug 2010 23:06:15 GMT
Server: Apache/2.2
Last-Modified: Fri, 08 Jan 2010 08:58:01 GMT
ETag: "671f91b-2d2-47ca362815840"
Accept-Ranges: bytes
Content-Length: 722
Connection: close
Content-Type: text/html
// HTML code here
现在,浏览器默认发送GET请求(至少这是firebug所说的)。抓取工具是否可能发送HEAD请求?如果是这样,为什么只有这个服务器响应403,而其他站点的其他服务器我没有?
如果它很重要,.htaccess中唯一的行是(除非我的客户更改了它,因为他们不想让我访问他们的服务器)
AddType text/x-component .htc
更新
谢谢@Ryk。 FireBug和Fiddler都发送GET请求,获得200(或300)个响应。正如所料。所以我猜这可能是服务器设置不好(尽管很奇怪,因为托管来自拥有数百万客户的大公司)或者他们放在.htaccess中的东西。他们将不得不让我调查他们的帐户。
我的问题的第二部分是,如果这可能是网站没有出现在任何搜索引擎中的原因(网站:www.attu.it 没有给出结果)。有什么想法?
更新2
在一些摆弄之后,事实证明在根目录中有phpMyAdmin机器人阻止.htaccess,这导致机器人的任何请求被发送回403 Forbidden
答案 0 :(得分:1)
我建议安装Fiddler并仔细查看请求。我有时看到页面上的图标位于需要验证的文件夹中会导致返回403。
Fiddler会给你一个好主意,你也可以尝试Firefox并安装FireBug插件并检查页面是否有错误。
在网站上我得到了一堆404的favicon.ico,但除此之外,当我做一个简单的GET请求时,我得到200 OK,但是当我做一个HEAD时,我也得到了403.现在进入它。
更新:我认为它可能是Apache服务器上的配置,但不是100%肯定。 http://hc.apache.org/httpclient-3.x/methods/head.html
UPDATE2:读取此http://www.pubbs.net/200811/httpd/17210-usershttpd-how-to-reject-head-request.html让我相信您的Apache服务器可以设置为拒绝HEAD请求。在这种情况下,它将返回403。
答案 1 :(得分:1)
有些管理员在httpd.conf中写道
< Limit PUT DELETE COPY MOVE>
命令拒绝,允许
拒绝所有人
允许从10.0
< /限制>
< LimitExcept PUT DELETE COPY MOVE>
命令拒绝,允许
拒绝所有人
< / LimitExcept中>
这会对HEAD请求产生“禁止”。你应该检查一下。
答案 2 :(得分:1)
我遇到了这个问题,因为我使用的是签名网址。
每个签名的URL仅适用于一种方法(例如GET或HEAD)。如果您想使用多种方法,则必须拥有多个网址。