robots.txt只允许root,不允许其他一切?

cot*_*axi 34 robots.txt

我似乎无法让这个工作,但它似乎非常基本.

我希望抓取域根目录

http://www.example.com
Run Code Online (Sandbox Code Playgroud)

但没有别的东西可以被抓取,所有子目录都是动态的

http://www.example.com/*
Run Code Online (Sandbox Code Playgroud)

我试过了

User-agent: *
Allow: /
Disallow: /*/
Run Code Online (Sandbox Code Playgroud)

但Google网站站长测试工具表示允许所有子目录.

有人有解决方案吗?谢谢 :)

eyw*_*ywu 40

根据Google的robots.txt文档中的Backus-Naur表单(BNF)解析定义,AllowDisallow指令的顺序无关紧要.所以改变订单真的不会帮助你.

相反,您应该使用$运算符来指示路径的关闭.

测试这个robots.txt.我确定它应该对你有用(我也在GWT中验证过):

user-agent: *
Allow: /$
Disallow: /
Run Code Online (Sandbox Code Playgroud)

这将允许http://www.example.com并被http://www.example.com/抓取,但其他一切都被阻止.

注意:Allow指令满足您的特定用例,但如果您有index.htmldefault.php,则不会对这些URL进行爬网.

旁注:我只是熟悉Googlebot和bingbot行为.如果您有目标的任何其他引擎,他们可能会或可能不会有关于如何列出指令的具体规则.因此,如果你想要"额外"肯定,你可以随时交换AllowDisallow指令块的位置,我只是设置它们以揭穿一些评论.

  • 最长的规则是“/$”,因此它优先。但是它只匹配主页,不匹配其他 URL。所有其他 URL 均属于“Disallow: /”规则,该规则会阻止所有爬行。 (2认同)

cha*_*sdg 9

当您查看google robots.txt规范时,您会看到:

Google,Bing,Yahoo和Ask支持路径值的有限形式的"通配符".这些是:

  1. *指定任何有效字符的0个或多个实例
  2. $指定URL的结尾

请参阅https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt?hl=en#example-path-matches

然后正如eywu所说,解决方案是

user-agent: *
Allow: /$
Disallow: /
Run Code Online (Sandbox Code Playgroud)