我有以下示例robots.txt和有关通配符的问题:
User-agent: *
Disallow: /*/admin/*
此规则现在是否同时适用于两个页面:
http://www.example.org/admin 和 http://www.example.org/es/admin
通配符不能代表任何字符吗?
答案 0 :(得分:1)
在原始robots.txt规范中,*
值中的Disallow
没有特殊含义,它只是一个与其他字符相同的字符。因此,遵循原始规范的漫游器会同时抓取http://www.example.org/admin
和http://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-agent
和Disallow
行之间不允许有空行。)
您可能要使用此:
User-agent: *
Disallow: /admin
Disallow: /*/admin
这至少会阻止相同的内容,但可能会超过您要阻止的内容(取决于您的网址):
User-agent: *
Disallow: /*admin
请记住,遵循原始robots.txt规范的漫游器会忽略它,因为它们会按字面意义解释*
。如果要同时涵盖两种类型的漫游器,则必须添加多条记录:对于遵循原始规范的漫游器,其记录为User-agent: *
,并且列出了所有用户代理的记录(在User-agent
中)支持通配符。