文章目录[隐藏]
robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
robots.txt应小写且放置在网站根目录
因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。
如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定义的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
将robots.txt放置在网站的子目录中是无效的。
注意:robots.txt协议并不是一个规范,而只是一个约定而已(甚至有些爬虫不遵守该约定),所以并不能保证网站的隐私。
robots.txt指令
允许所有的搜索引擎爬虫:
User-agent: *
Disallow:
或者另外一种写法:
User-agent: * Allow:/
User-agent是指定特点搜索引擎爬虫的,当值为*的时候,代表所有搜索引擎。
例如以下示例,允许百度搜索引擎抓取所有页面:
User-agent: Baiduspider
Allow:/
常见的搜索引擎爬虫及相应名称:
爬虫名称 | 对应搜索引擎 |
Baiduspider | 百度搜索 |
Googlebot | 谷歌搜索 |
Bingbot | 必应搜索 |
360Spider | 360搜索 |
YoudaoBot | 有道搜索 |
ChinasoSpider | 中国搜索 |
Sosospider | 搜搜 |
Yisouspider | 宜搜 |
Sogou web spider Sogou inst spider Sogou spider2 Sogou blog Sogou News Spider Sogou Orion spider | 搜狗搜索 |
以上数据更新于2021年2月
禁止所有爬虫访问特定目录:
User-agent: *
Disallow: /cgi-bin/
Disallow: /js/
Disallow: /tmp/
仅禁止谷歌访问特定目录:
User-agent: Googlebot
Disallow: /cgi-bin/
Disallow: /js/
Disallow: /tmp/
禁止所有机器人访问特定文件类型:
User-agent: * Disallow: /*.php$ Disallow: /*.js$ Disallow: /*.inc$ Disallow: /*.css$
自动发现Sitemaps文件
Sitemap指令被几大搜索引擎支持(包括百度、Google、Bing和搜狗),指定网站Sitemaps文件的位置。Sitemap
指令并不受User-agent
指令的限制,所以它可以放在robots.txt文件中的任意位置。示例:
Sitemap: <https://www.example.com/sitemap.xml>
替代方法
虽然robots.txt是最为广泛接受的方法,但也可以与robots META标签一起使用。robots META标签主要是针对一个独立的页面设置,与其他的META标签(如使用的语言、页面的描述、关键词等)一样,robots META标签也是放在页面的HEAD标签中,专门用来告诉搜索引擎robots如何抓取该页的内容。
<head>
<meta name="robots" content="noindex,nofollow" />
</head>
除了在网站根目录中使用robots.txt文件之外,还可以使用添加“X-Robots-Tag”HTTP标头的方式来实现同样的功能。
一般情况,我们使用robots.txt
文件来告知搜索引擎哪些文件/文件夹允许爬网或禁止爬网,还有X-Robots-Tag HTTP标头之类的东西,你知道吗?使用此功能对搜索引擎和网站服务器都有好处,通过禁止对网站某些不重要区域的爬网访问,可以减少服务器负载。
在继续之前,先了解一下robots.txt
文件的作用。简单来讲,它的作用是告诉搜索引擎不要爬网网站上的特定页面,文件或目录等。
不建议通过robots.txt
屏蔽整个网站,除非是一个非常私密的网站。
X-Robots-Tag
早在2007年,Google宣布增加了对X-Robots-Tag指令的支持,这意味着不仅可以通过robots.txt文件限制对搜索引擎的访问,还可以通过编程方式在HTTP响应的标头中设置各种与robot.txt相关的指令。
X-Robots-Tag指令
有两种不同类型的指令:搜寻器指令和索引器指令,本文将在下面简要说明差异。
搜寻器指令
robots.txt
文件仅包含“搜寻器指令”,该指令会告诉搜索引擎允许或不允许它们进入的位置。通过使用此指令,可以指定允许搜索引擎进行爬网的位置:
Allow
该指令的作用正好相反(禁止爬网):
Disallow
此外,可以使用以下指令来帮助搜索引擎更快地抓取网站(提交网站地图):
Sitemap
请注意,还可以通过结合使用以下指令,来指定不同搜索引擎的指令:
User-agent
不过有时候即使用Disallow
禁止了某些资源还是可能出现在搜索引擎结果中,说明仅仅使用robots.txt
是不够的。
索引器指令
索引器指令是基于每页和/或每个元素设置的指令。截止到2007年7月,有两个指令:rel =“ nofollow”
(表示该链接不应通过授权/ PageRank)与Meta Robots标记。
使用Meta Robots标记,可以真正阻止搜索引擎显示想保留在搜索结果之外的页面。使用X-Robots-Tag HTTP标头可以达到相同的结果。如前所述,X-Robots-Tag还允许控制如何索引特定文件(类型),从而提供了更大的灵活性。
X-Robots-Tag的用法示例
如果要防止搜索引擎显示使用PHP生成的文件,可以在header.php(WordPress)文件的开头添加以下内容:
header("X-Robots-Tag: noindex", true);
如果要组织搜索引擎跟踪这些页面上的链接,可以按以下示例:
header("X-Robots-Tag: noindex, nofollow", true);
现在,尽管在PHP中使用此方法非常方便,如果希望阻止PHP之外的一些特定的文件类型,更好的方法是将X-Robots-Tag添加到Nginx/Apache服务器配置或.htaccess文件中。
假如一个提供.doc文件的网站,但由于特定的原因,不希望搜索引擎为该文件类型建立索引,则可以使用X-Robots-Tag。在Apache服务器上,应将以下行添加到/ .htaccess
文件中:
<FilesMatch ".doc$">
Header set X-Robots-Tag "noindex, noarchive, nosnippet"
</FilesMatch>
如果想对.doc和.pdf文件都这样做:
<FilesMatch ".(doc|pdf)$">
Header set X-Robots-Tag "noindex, noarchive, nosnippet"
</FilesMatch>
如果运行的是Nginx而非Apache,则可以通过在服务器配置中添加以下内容来获得一样的效果:
location ~* .(doc|pdf)$ {
add_header X-Robots-Tag "noindex, noarchive, nosnippet";
}
结论
从上面的示例可以看到,X-Robots-Tag HTTP标头是一个非常强大的工具,可以和robots.txt
搭配使用,效果更佳。
免责声明: 本网站所发布的一切资源均来自于会员发布以及互联网收集,不代表本站立场,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则一切后果请用户自负;依据WordPress GPL开源许可协议分享,如有侵犯到您的权益,请联系我们。