1. 什么是 robots.txt 文件?
搜索引擎使用 spider 程序自动访问互联网上的网页并获取网页信息.spider 在访问一个网站时, 会首先会检查该网站的根域下是否有一个叫做 robots.txt 的纯文本文件, 这个文件用于指定 spider 在您网站上的抓取范围. 您可以在您的网站中创建一个 robots.txt, 在文件中声明 该网站中不想被搜索引擎收录的部分或者指定搜索引擎只收录特定的部分.
请注意, 仅当您的网站包含不希望被搜索引擎收录的内容时, 才需要使用 robots.txt 文件. 如果您希望搜索引擎收录网站上所有内容, 请勿建立 robots.txt 文件.
2. robots.txt 文件放在哪里?
robots.txt 文件应该放置在网站根目录下. 举例来说, 当 spider 访问一个网站(比如 http://www.abc.com)时, 首先会检查该网站中是否存在 http://www.abc.com/robots.txt 这个文件, 如果 Spider 找到这个文件, 它就会根据这个文件的内容, 来确定它访问权限的范围.
网站 URL | 相应的 robots.txt 的 URL |
http://www.w3.org/ | http://www.w3.org/robots.txt |
http://www.w3.org:80/ | http://www.w3.org:80/robots.txt |
http://www.w3.org:1234/ | http://www.w3.org:1234/robots.txt |
http://w3.org/ | http://w3.org/robots.txt |
3. 我在 robots.txt 中设置了禁止百度收录我网站的内容, 为何还出现在百度搜索结果中?
如果其他网站链接了您 robots.txt 文件中设置的禁止收录的网页, 那么这些网页仍然可能会出现在百度的搜索结果中, 但您的网页上的内容不会被抓取、建入索引和显示, 百度搜索结果中展示的仅是其他网站对您相关网页的描述.
4. 禁止搜索引擎跟踪网页的链接, 而只对网页建索引
如果您不想搜索引擎追踪此网页上的链接, 且不传递链接的权重, 请将此元标记置入网页的<HEAD> 部分:
<meta name=”robots” content=”nofollow”>
如果您不想百度追踪某一条特定链接, 百度还支持更精确的控制, 请将此标记直接写在某条链接上:
<a href=”http://www.miwinfo.com/signin.php” rel=”nofollow”>signin</a>
要允许其他搜索引擎跟踪, 但仅防止百度跟踪您网页的链接, 请将此元标记置入网页的<HEAD> 部分:
<meta name=”Baiduspider” content=”nofollow”>
5. 禁止搜索引擎在搜索结果中显示网页快照, 而只对网页建索引
要防止所有搜索引擎显示您网站的快照, 请将此元标记置入网页的 <HEAD> 部分:
<meta name=”robots” content=”noarchive”>
要允许其他搜索引擎显示快照, 但仅防止百度显示, 请使用以下标记:
<meta name=”Baiduspider” content=”noarchive”>
注: 此标记只是禁止百度显示该网页的快照, 百度会继续为网页建索引, 并在搜索结果中显示网页摘要.
6. 我想禁止百度图片搜索收录某些图片, 该如何设置?
禁止 Baiduspider 抓取网站上所有图片、禁止或允许 Baiduspider 抓取网站上的某种特定格式的图片文件可以通过设置 robots 实现, 请参考“robots.txt 文件用法举例”中的例 10、11、12.
7. robots.txt文件的格式
“robots.txt” 文件包含一条或更多的记录, 这些记录通过空行分开(以 CR,CR/NL, or NL 作为结束符), 每一条记录的格式如下所示:
“<field>:<optional space><value><optionalspace>”
在该文件中可以使用 #进行注解, 具体使用方法和 UNIX 中的惯例一样. 该文件中的记录通常以一行或多行 User-agent 开始, 后面加上若干 Disallow 和 Allow 行, 详细情况如下:
User-agent:
该项的值用于描述搜索引擎 robot 的名字. 在 ”robots.txt” 文件中, 如果有多条 User-agent 记录说明有多个 robot 会受 到 ”robots.txt” 的限制, 对该文件来说, 至少要有一条 User-agent 记录. 如果该项的值设为 *, 则对任何 robot 均有效, 在 ”robots.txt” 文件中,”User-agent:*” 这样的记录只能有一条. 如果在 ”robots.txt” 文件中, 加入 ”User- agent:SomeBot” 和若干 Disallow、Allow 行, 那么名为 ”SomeBot” 只受到 ”User-agent:SomeBot” 后面的 Disallow 和 Allow 行的限制.
Disallow:
该项的值用于描述不希望被访问的一组 URL, 这个值可以是一条完整的路径, 也可以是路径的非空前缀, 以 Disallow 项的值开头的 URL 不会被 robot 访问. 例如 ”Disallow:/help” 禁止 robot 访问 /help.html、/helpabc.html、/help /index.html, 而 ”Disallow:/help/” 则允许 robot 访问 /help.html、/helpabc.html, 不能访问 /help/index.html.”Disallow:” 说明允许 robot 访问该网站的所有 url, 在 ”/robots.txt” 文件中, 至少要有一条 Disallow 记录. 如果 ”/robots.txt” 不存在或者为空文件, 则对于所有的搜索引擎 robot, 该网站都是开放的.
Allow:
该项的值用于描述希望被访问的一组 URL, 与 Disallow 项相似, 这个值可以是一条完整的路径, 也可以是路径的前缀, 以 Allow 项的值开头 的 URL 是允许 robot 访问的. 例如 ”Allow:/hibaidu” 允许 robot 访问 /hibaidu.htm、/hibaiducom.html、/hibaidu/com.html. 一个网站的所有 URL 默认是 Allow 的, 所以 Allow 通常与 Disallow 搭配使用, 实现允许访问一部分网页同时禁止访问其它所有 URL 的功能.
使用 ”*”and”$”:
Baiduspider 支持使用通配符 ”*” 和 ”$” 来模糊匹配 url.
“$” 匹配行结束符.
“*” 匹配 0 或多个任意字符.
注: 我们会严格遵守 robots 的相关协议, 请注意区分您不想被抓取或收录的目录的大小写, 我们会对 robots 中所写的文件和您不想被抓取和收录的目录做精确匹配, 否则 robots 协议无法生效.
8. URL匹配举例
Allow 或 Disallow 的值 | URL |
匹配结果 |
/tmp | /tmp | yes |
/tmp | /tmp.html | yes |
/tmp | /tmp/a.html | yes |
/tmp | /tmphoho | no |
/Hello* | /Hello.html | yes |
/He*lo | /Hello,lolo | yes |
/Heap*lo | /Hello,lolo | no |
html$ | /tmpa.html | yes |
/a.html$ | /a.html | yes |
htm$ | /a.html | no |
9. robots.txt 文件用法举例
例 1. 禁止所有搜索引擎访问网站的任何部分 下载该 robots.txt 文件 |
User-agent: * Disallow: / |
例 2. 允许所有的 robot 访问 (或者也可以建一个空文件 “/robots.txt”) |
User-agent: * Allow: / |
例 3. 仅禁止 Baiduspider 访问您的网站 | User-agent: Baiduspider Disallow: / |
例 4. 仅允许 Baiduspider 访问您的网站 | User-agent: Baiduspider Allow: /User-agent: * Disallow: / |
例 5. 仅允许 Baiduspider 以及 Googlebot 访问 | User-agent: Baiduspider Allow: /User-agent: Googlebot Allow: /User-agent: * Disallow: / |
例 6. 禁止 spider 访问特定目录 在这个例子中, 该网站有三个目录对搜索引擎的访问做了限制, 即 robot 不会访问这三个目录. 需要注意的是对每一个目录必须分开声明, 而不能写成 “Disallow: /cgi-bin/ /tmp/”. |
User-agent: * Disallow: /cgi-bin/ Disallow: /tmp/ Disallow: /~joe/ |
例 7. 允许访问特定目录中的部分 url | User-agent: * Allow: /cgi-bin/see Allow: /tmp/hi Allow: /~joe/look Disallow: /cgi-bin/ Disallow: /tmp/ Disallow: /~joe/ |
例 8. 使用 ”*” 限制访问 url 禁止访问 /cgi-bin/ 目录下的所有以 ”.htm” 为后缀的 URL(包含子目录). |
User-agent: * Disallow: /cgi-bin/*.htm |
例 9. 使用 ”$” 限制访问 url 仅允许访问以 ”.htm” 为后缀的 URL. |
User-agent: * Allow: /*.htm$ Disallow: / |
例 10. 禁止访问网站中所有的动态页面 | User-agent: * Disallow: /*?* |
例 11. 禁止 Baiduspider 抓取网站上所有图片 仅允许抓取网页, 禁止抓取任何图片. |
User-agent: Baiduspider Disallow: /*.jpg$ Disallow: /*.jpeg$ Disallow: /*.gif$ Disallow: /*.png$ Disallow: /*.bmp$ |
例 12. 仅允许 Baiduspider 抓取网页和.gif 格式图片 允许抓取网页和 gif 格式图片, 不允许抓取其他格式图片 |
User-agent: Baiduspider Allow: /*.gif$ Disallow: /*.jpg$ Disallow: /*.jpeg$ Disallow: /*.png$ Disallow: /*.bmp$ |
例 13. 仅禁止 Baiduspider 抓取.jpg 格式图片 | User-agent: Baiduspider Disallow: /*.jpg$ |