与谷歌机器人的第二次约会:HTTP 状态代码和If-Modified-Since

2009年2月5日星期四



原文: Date with Googlebot, Part II: HTTP status codes and If-Modified-Since
发表于: 2008年11月27日星期四,中午12:12

我们 与谷歌机器人的上一次约会 棒极了,但网站们还对响应代码感到比较困惑,不知道自己返回的响应代码是否正确。我们的服务器返回了 301 永久重定向代码,但在什么情况下我们应该返回 302 临时重定向 ? 如果我们返回一些新的 "404 文件无法找到 " 代码, Googlebot 是否不会再访问我们的网站?我们应该支持标头 (header) " If-Modified-Since " 吗?这些问题让人困惑不解,就好像懵懂的爱情一样。为了少一点诸如此类的烦恼,我们来问问专家 —— 谷歌机器人,看看他怎样评价我们的响应代码。
支持"If-Modified-Since"标头和返回304代码有利于节省带宽
——————
亲爱的谷歌机器人,
最近我给我的网页做了一次大扫除,删除了一些陈旧的、无用的网页。现在这些网页都返回 404" 页面无法找到 " 代码 ,这么做合适吗?还是我让你感到困惑了? Frankie O'Fore

亲爱的Frankie,
404 代码是告知网页已不存在的标准方式,对此我不会感到困惑,因为旧网页从网站上删除或更新是很正常的事情。大多数网站都会在网站管理员工具的抓取诊断中显示一些 404 错误。这绝对不是什么大问题。只要您有良好的网站架构并能链接到所有您可抓取的网页,我就会很高兴,因为我能籍此找到我需要的任何信息。
但是别忘了,不仅是我来访问你的网页,也会有很多访问者看到你的网页。如果你只是显示简单的 "404 页面无法找到 " 的信息的话,不了解的访问者可能会很迷惑。其实有许多办法可以让你的无法显示的页面变得更加友好,最便捷的一个方式就是使用谷歌网站管理员工具上的 404 小工具 ,它能够帮助访问者找到那些真正存在的内容。大多数的主机托管商,无论大小,都允许你自定义你的 404 页面(同样适用于其他返回代码)。


爱你的 ,
谷歌机器人




嘿,谷歌机器人 ,
我读了上面你给Frankie的回复,我有一些问题。如果有人链接到我网站上不存在的页面怎么办?我该怎样才能确保那些访问者能够找到他们想要的东西呢?此外,如果我想移动一些页面该怎么办?我想更好地组织我的网站,但是我很担心这会让你感到困惑,我该怎样让你更明白我的网站呢? Little Jimmy

Jimmy你好,
让我们先不考虑你问题的先后顺序,从最核心的问题来回答吧。首先,我们来看一下来自其他网站的链接,很显然,这些链接可能是你网站的一个重要的流量来源,而且你不希望访问者看到的是一个不友好的 " 页面无法访问 " 的信息。因此,你可以利用强大的重定向来解决这些问题。
最常用的两种重定向是 301 302 。事实上还有更多的重定向,但这两种是目前与我们联系最紧密的,正如 404 301 302 是可以发送给用户和搜索引擎机器人的不同种类的响应代码。 301 302 都是重定向,但 301 为永久重定向、 302 为临时重定向。 301 重定向可以告诉我这个页面以前是什么样、目前转移到了什么地方等等。它可以完美地用于重新建构你的网站,并对重新计算被指向的新网页的声誉有很大帮助。每当我看到 301 永久重定向,我就会把所有指向旧网页的外部链接自动作为重定向后新网页的声誉计算因素。这不是很方便么?
如果你不知道怎样实施这些重定向的话,我可以帮你入门。这主要取决于你的 web 服务器,此外这里有一些搜索结果会比较有帮助:
Apache: https://www.google.cn/search?q=301+redirect+apache

IIS: https://www.google.cn/search?q=301+redirect+iis

你也可以参考服务器所附带的手册或自述文档。

作为重定向的另一个替代办法,你可以向链向您网站的网站管理员发送电子邮件,请他们更新链接指向。不能确定哪些网站指向你是吗?不用担心,我的谷歌同事们已经让这变得轻而易举了。在网站管理员工具的“链接”部分中,你可以输入你网站的某个具体 URL 来查阅哪些外部链接指向了该网页。
我的谷歌同事们最近还发布了一个新的工具,可以显示所有链向你网站中不存在网页的 URL ,你可以 在此 了解更多。
永远乐意为你效劳的 ,
谷歌机器人



亲爱的谷歌机器人,
我有一个问题。我生活在互联网中一个充满活力的地方,我不断改变对事物的看法。当你问我一个问题,我绝不会说出同一个答案两次,我的网站上的头条内容每个小时都在变化,我总会想到新的内容。你看起来像一个很直爽的人,希望得到直接的答案。当我的网站内容频繁更新的时候,我该怎么让你明白又不使你感到困惑呢? Temp O'Rary

亲爱的 Temp
我刚刚告诉Jimmy通过 301 永久重定向来告知谷歌机器人你的新网址,但是你描述的情况则不同,应当适用于 302 临时重定向。对某一特定已经被索引的 URL ,如果你想告知你的用户该 URL 的地址是正确的,但是想访问的内容可以临时在另一个地址找到,那么使用 302 临时重定向(或更为罕见的 "307 临时重定向 " )是一个既礼貌又妥当的方式。例如, Orkut 将用户从 https://orkut.com 重定向 https://google.com/accounts/login?service=orkut ,但当检索Orkut*时,这个 URL 并不是一个具有实际检索价值的网页,而且是在另一个域名下。因此,使用 302 临时重定向可以告诉我,不要把属于 https://orkut.com 的内容和反向链接计算到重定向后的目标网址上——因为它只是一个临时页面。
这就是为什么当您搜索 orkut 时,您看到的是 orkut.com ,而不是那个更长的 URL
请记住:直接沟通是保持良好关系的关键。
你的朋友,
谷歌机器人

* 请注意,在这里我把 URL 做了简化,使它更易读。实际的 URL 要远复杂于此。






谷歌机器人上尉 ,
我是一个经常重新设计和组织的网站。我注意到很多网站链接的 URL 都是我在很久以前就删掉的 URL 。我已经为这些已删除的 URL 设置了指向新 URL 301 永久重定向,但在这之后我又对网站做了重新设计,很多上述新的 URL 也不存在了,于是我又用 301 永久重定向来让它们指向更新的 URL 。现在我很担心,在抓取的时候,沿着这些指示,你很可能会不断地抓取到一连串的 301 重定向,而最终导致你可能放弃未来对我网站的抓取。 Ethel Binky

亲爱的 Ethel
听起来好像你已经设置了很多嵌套重定向的 URL 。好吧,天哪!如果次数比较有限的话,这些 " 重复重定向 " 是可以被理解的,但我们或许应当首先思考一下你为什么要这样做。如果你把中间环节的 301 重定向统统移除,并将我直接引导到该 URL 的最终目标网址,你将为我们彼此节省大量的时间和 HTTP 请求。但是不要仅仅想到我们两个,想想其他访问者可能早已经厌倦了在状态栏中不断看到反复的 连接 加载 连接 的冗长过程。
设身处地地想一想,如果你的重定向开始看起来都相当长,用户们很可能担心你已经把他们推入到一个无限死循环中。机器人和人类都会害怕那种 无穷无尽的重复 。相反地,试着消除那些重复重定向,或至少保持他们尽可能短一些,我们就可以体谅一下广大访问者!
设想周到的谷歌网络机器人



亲爱的谷歌机器人 ,
我知道你一定是很喜欢我,要不然你就不会隔段时间就发出抓取我某一网页的请求,即使他们的内容从来没有改变过,就好像我的十年内都没有变化的大学论文一样。但是这些现在开始变成我的一个麻烦了,有什么办法可以帮助我不让你来占用我珍贵的带宽吗? Janet Crinklenose

Janet, Janet, Janet,
看起来你应该学会一个新的名词 —— 304 未修改”。如果我之前曾经访问过一个 URL ,那么我会在我的请求中插入一个 " If-Modified-Since " 。此行还包含一个 HTTP 格式的日期字符串。如果你不想再向我重复发送一遍该文档,那么你只需要向我发送一个正常的并带有 "304 未修改 " 状态的 HTTP 标头。我很喜欢这样的信息。当你这么操作的时候,你没有必要再向我重复发送该文档,这就意味着你不用浪费你的带宽,而我也不会觉得你又在用老掉牙的重复内容糊弄我。
你很可能会注意到很多浏览器和代理服务器也会在标头上显示 " If-Modified-Since " ,你也可以这么做来抵制滥用带宽的行为。
现在就开始行动,节省更多的带宽吧!
谷歌机器人

——————
谷歌机器人对我们真是太有帮助啦!现在我们知道应该怎样更好地响应用户和搜索引擎了。下次我们再相聚的时候,就该和这个老朋友坐下来促膝谈心了 与谷歌机器人的第三次约会 即将发表,敬请关注! )。