8

几个月后,该网站从各大搜索引擎的搜索结果中消失了,我终于找到了一个可能的原因。

我使用 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 发送数据:

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 中的东西。他们将不得不让我调查他们的帐户。

我的问题的第二部分是这是否可能是该网站没有出现在任何搜索引擎中的原因(site:www.attu.it没有给出任何结果)。任何想法?

更新 2
经过一番摆弄,结果发现根目录中有 phpMyAdmin robots-blocking .htaccess,这导致任何来自机器人的请求都被发送回 403 Forbidden

4

3 回答 3

1

我建议安装 Fiddler 并仔细查看请求。我有时会看到页面上需要身份验证的文件夹中的图标会导致返回 403。

Fiddler 会给你一个好主意,你也可以尝试 Firefox 并安装 FireBug 插件并检查页面是否有错误。

查看该站点,我得到了 favicon.ico 的一堆 404,但除此之外,当我执行一个简单的 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。

于 2010-08-10T23:50:57.093 回答
1

一些管理员在 httpd.conf 中写道

<Limit PUT DELETE COPY MOVE>
命令deny,allow
Deny from all
Allow from 10.0
</Limit>

<LimitExcept PUT DELETE COPY MOVE>
命令拒绝,允许
拒绝所有
</LimitExcept>

这会对 HEAD 请求产生“禁止”。你应该检查一下。

于 2011-09-14T08:03:51.033 回答
1

我遇到了这个确切的问题,因为我使用的是签名 URL。

每个签名的 URL 仅适用于一种方法(例如 GET 或 HEAD)。如果要使用多种方法,则必须有多个 URL。

于 2013-12-16T21:35:04.473 回答