假设我们使用包含mod_rewrite
或类似内容的漂亮网址,并且有以下两条路线:
/page
/page-two
现在我们要禁止机器人抓取第一条路线(/page
)。
# robots.txt
User-agent: *
Disallow: /page
禁止(http://www.robotstxt.org/orig.html):
...例如,Disallow:/ help不允许/help.html和/help/index.html,而Disallow:/ help /将禁止/help/index.html但允许/help.html.
所以上面的robots.txt
示例也不允许/page-two
,对吗?
完成这项工作的正确方法是什么?
可能是以下代码吗?
# robots.txt
User-agent: *
Disallow: /page/
答案 0 :(得分:0)
来自Google's robots.txt specifications:
在组成员级别,特别是对于允许和禁止指令,基于[path]条目长度的最具体规则将胜过不太具体(较短)的规则。带有通配符的规则的优先顺序是未定义的。
这意味着您定义它们的顺序无关紧要。在你的情况下,这应该工作:
User-agent: *
Disallow: /page
Allow: /page-
更清楚:每个网址都与所有路径匹配。 /page
将与/page/123
,/page/subdirectory/123/whateverishere.html
,/page-123
和/page
匹配。将使用具有匹配的最长路径的指令。如果/page
和/page-
都匹配,则使用/page-
的指令(允许)。如果/page
匹配,但/page-
不匹配,则使用/page
的指令(Disallow)。如果/page
和/page-
都不匹配,则默认为(允许)。
答案 1 :(得分:0)
User-agent: *
Allow: /page-two
Disallow: /page
答案 2 :(得分:0)
所以上面的robots.txt示例也不允许
/page-two
,对吗?
正确。
完成这项工作的正确方法是什么?
在original robots.txt specification中,这根本不可能。
(请注意,您的上一个示例不会阻止/page
,因为不允许的网址必须以/page/
开头(包括最后一个斜杠)。)
一些解析器了解Allow
和/或通配符,它们可用于解决您的问题,但两者都不是原始规范的一部分。如果您只考虑某些机器人,请查看他们的文档,了解他们支持的robots.txt的“扩展程序”类型。
备选方案:
X-Robots-Tag
。meta
元素与robots
名称一起使用(但请注意:noindex
是关于索引,而robots.txt的Disallow
是关于爬行)。