robots.txt:通配符也表示没有字符吗?

时间:2019-03-15 10:29:16

标签: robots.txt


我有以下示例robots.txt和有关通配符的问题:

User-agent: *

Disallow: /*/admin/*

此规则现在是否同时适用于两个页面:

http://www.example.org/admin http://www.example.org/es/admin

通配符不能代表任何字符吗?

1 个答案:

答案 0 :(得分:1)

在原始robots.txt规范中,*值中的Disallow没有特殊含义,它只是一个与其他字符相同的字符。因此,遵循原始规范的漫游器会同时抓取http://www.example.org/adminhttp://www.example.org/es/admin

某些漫游器支持原始robots.txt规范的“扩展名”,一个流行的扩展名是将*中的Disallow解释为通配符。但是,这些扩展未在某处进行标准化,每个bot都会对其进行不同的解释。

最流行的定义可以说是from Google Search(Google说Bing,Yahoo和Ask使用相同的定义):

  

*指定0个或多个任何有效字符的实例

您的示例

根据上述定义解释*时,尽管仍然允许您对两个URL进行爬网。

您的/*/admin/*在路径中需要三个斜杠,但是http://www.example.org/admin只有一个斜杠,而http://www.example.org/es/admin只有两个斜杠。

(还要注意,User-agentDisallow行之间不允许有空行。)

您可能要使用此:

User-agent: *
Disallow: /admin
Disallow: /*/admin

这至少会阻止相同的内容,但可能会超过您要阻止的内容(取决于您的网址):

User-agent: *
Disallow: /*admin

请记住,遵循原始robots.txt规范的漫游器会忽略它,因为它们会按字面意义解释*。如果要同时涵盖两种类型的漫游器,则必须添加多条记录:对于遵循原始规范的漫游器,其记录为User-agent: *,并且列出了所有用户代理的记录(在User-agent中)支持通配符。