禁止的含义:/ *? 在robots.txt中

雅虎的robots.txt包含:

User-agent: * Disallow: /p/ Disallow: /r/ Disallow: /*? 

最后一行是什么意思? (“不允许: /*?”)

如果这是一个Perl正则expression式:

 *? Match 0 or more times, not greedily 

http://perldoc.perl.org/perlre.html

然而robots.txt遵循一个非常基本的语法,因此,

要匹配一系列字符,请使用星号(*)。 例如,要阻止访问以private开头的所有子目录:

 User-agent: Googlebot Disallow: /private*/ 

要阻止访问包含问号(?)的所有url(更具体地说,任何以您的域名开头,后接任何string,后跟问号,后跟任意string的url):

 User-agent: Googlebot Disallow: /*? 

要指定匹配URL的结尾,请使用$。 例如,要阻止任何以.xls结尾的URL:

 User-agent: Googlebot Disallow: /*.xls$ 

您可以将此模式匹配与Allow指令结合使用。 例如,如果一个? 表示会话ID,您可能希望排除包含它们的所有url,以确保Googlebot不会抓取重复的网页。 但是,以一个? 可能是您希望包含的页面的版本。 对于这种情况,你可以设置你的robots.txt文件如下:

 User-agent: * Allow: /*?$ Disallow: /*? 

Disallow:/ *? 指令将阻止任何包含? (更具体地说,它将阻止任何以您的域名开头的URL,后面跟随任何string,随后是问号,后跟任何string)。

允许:/ *?$指令将允许任何以? (更具体地说,它将允许任何以您的域名开头的URL,后跟一个string,后跟一个?,后面没有字符)。

所以基本上任何一种查询或search雅虎! 被机器人禁止。

expression式的支持混乱地没有在RFC中列出http://www.robotstxt.org/norobots-rfc.txt

Google提供了最好的说明, http://www.google.com/support/webmasters/bin/answer.py?hl = zh_CN&answer = 156449

*使它成为通配符。 那么,uri结尾呢? 会受到限制。