User-agent: *
Disallow: /p/
Disallow: /r/
Disallow: /*?
最后一行是什么意思?(“Disallow: /*?”)
答案1
如果它是 Perl 正则表达式:
*? Match 0 or more times, not greedily
http://perldoc.perl.org/perlre.html
然而,robots.txt
遵循一个非常基本的语法,因此,
要匹配字符序列,请使用星号 (*)。例如,要阻止访问所有以 private 开头的子目录:
User-agent: Googlebot Disallow: /private*/
要阻止访问所有包含问号 (?) 的 URL(更具体地说,任何以您的域名开头,后跟任意字符串,后跟问号,后跟任意字符串的 URL):
User-agent: Googlebot Disallow: /*?
要指定匹配 URL 的结尾,请使用 $。例如,要阻止任何以 .xls 结尾的 URL:
User-agent: Googlebot Disallow: /*.xls$
您可以将此模式匹配与 Allow 指令结合使用。例如,如果 ? 表示会话 ID,您可能希望排除所有包含它们的 URL,以确保 Googlebot 不会抓取重复的页面。但以 ? 结尾的 URL 可能是您想要包含的页面版本。对于这种情况,您可以按如下方式设置 robots.txt 文件:
User-agent: * Allow: /*?$ Disallow: /*?
Disallow: / *? 指令将阻止任何包含 ? 的 URL(更具体地说,它将阻止任何以您的域名开头,后跟任何字符串,后跟问号,后跟任何字符串的 URL)。
Allow: /*?$ 指令将允许任何以 ? 结尾的 URL(更具体地说,它将允许任何以您的域名开头,后跟一个字符串,后跟一个 ?,且 ? 后没有字符的 URL)。
因此基本上 Yahoo! 上任何类型的查询或搜索都是被机器人禁止的。
令人困惑的是,RFC 中没有列出表达式支持,http://www.robotstxt.org/norobots-rfc.txt
最好的描述是由谷歌提供的,http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
答案2
* 使其成为通配符。因此,以 ? 结尾的 uri 将受到限制。