【问题标题】:robots.txt to disallow all pages except one? Do they override and cascade?robots.txt 禁止除一个以外的所有页面?它们是否覆盖和级联?
【发布时间】:2013-11-21 01:12:08
【问题描述】:

我希望抓取我网站的一个页面,而不是其他页面。

另外,如果它与上面的答案有任何不同,我还想知道除了网站的根(索引)之外禁止所有内容的语法。

# robots.txt for http://example.com/

User-agent: *
Disallow: /style-guide
Disallow: /splash
Disallow: /etc
Disallow: /etc
Disallow: /etc
Disallow: /etc
Disallow: /etc

或者我可以这样做吗?

# robots.txt for http://example.com/

User-agent: *
Disallow: /
Allow: /under-construction

另外我应该提到这是一个 WordPress 安装,因此例如“正在建设中”被设置为首页。所以在这种情况下,它充当索引。

我认为我需要的是http://example.com craweld,但没有其他页面。

# robots.txt for http://example.com/

User-agent: *
Disallow: /*

这是否意味着在根目录之后不允许任何内容?

【问题讨论】:

    标签: robots.txt


    【解决方案1】:

    你可以在下面使用它,两者都可以工作

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

    User-agent: *
    Allow: /index.php
    Disallow: /
    

    Allow 必须在 Disallow 之前,因为文件是从上到下读取的

    Disallow: / 表示“禁止任何以斜线开头的内容”。所以这意味着网站上的所有内容。

    $ 表示“字符串的结尾”,就像在正则表达式中一样。所以 Allow : /$ 的结果是你的主页 /index

    【讨论】:

      【解决方案2】:

      只允许访问一页的最简单方法是:

      User-agent: *
      Allow: /under-construction
      Disallow: /
      

      original robots.txt specification 表示爬虫应该从上到下读取 robots.txt,并使用第一个匹配规则。如果你把Disallow放在前面,那么许多机器人会认为它说他们不能抓取任何东西。通过将Allow 放在首位,那些从上到下应用规则的人将看到他们可以访问该页面。

      表达式规则很简单:表达式Disallow: / 表示“禁止斜线开头的任何内容。”所以这意味着网站上的所有内容。

      您的 Disallow: /* 对 Googlebot 和 Bingbot 的含义相同,但不支持通配符的机器人可以看到 /* 并认为您的意思是文字 *。所以他们可以假设抓取/*foo/bar.html是可以的。

      如果你只想爬http://example.com,没有别的,你可以试试:

      Allow: /$
      Disallow: /
      

      $ 表示“字符串结尾”,就像在正则表达式中一样。同样,这适用于 Google 和 Bing,但不适用于不支持通配符的其他爬虫。

      【讨论】:

      • Jim,你说的是“字符串结尾”,但我相信任何 url 都是字符串,例如 http://example.com/new-page.htmlhttp://example.com/index.php?route=product/category&path=101。请澄清。
      • 按照答案的建议,将我的 rotobs.txt 设置为“用户代理:* 允许:/$ 禁止:/”从谷歌搜索中完全删除了我的网站,尽管我希望我的根域能够显示(在谷歌搜索时使用“site:example.com"”),而该域中的所有其他页面/资源从谷歌搜索中消失。我在这里错过了什么?
      • @virus 我不知道问题出在哪里。我建议您查看 Google 的网站,或联系 Google 支持。
      • @JimMischel 谢谢 - 会试着弄清楚。每个人似乎都建议您在答案中描述的相同解决方案,但无论出于何种原因,它在我的情况下都不起作用。诡异的。也许它以某种方式与wordpress有关?
      【解决方案3】:

      如果您登录 Google 网站管理员工具,请从左侧面板转到抓取,然后转到以 Google 的身份获取。在这里您可以测试 Google 将如何抓取每个页面。

      在屏蔽除首页以外的所有内容的情况下:

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

      会起作用的。

      【讨论】:

      • 如果 Googlebot 需要查看 robots.txt 以了解要阻止的内容,这如何阻止 robots.txt?
      【解决方案4】:

      http://en.wikipedia.org/wiki/Robots.txt#Allow_directive

      顺序只对遵循标准的机器人重要;对于 Google 或 Bing 机器人,顺序并不重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        相关资源
        最近更新 更多