我的客户有一大堆他们不想被谷歌索引的页面 - 它们都被称为
http://example.com/page-xxx
所以它们是 / page-123 或 / page-2 或 / page-25 等
有没有办法停止谷歌索引任何以/ page-xxx开头的页面使用robots.txt
这会有什么用吗?
Disallow: /page-*
由于
答案 0 :(得分:14)
首先,显示Disallow: /post-*
的行不会阻止抓取“/ page-xxx”形式的页面。您的意思是将“页面”放在Disallow行中,而不是“发布”吗?
Disallow实质上说,“禁止以此文字开头的网址”。因此,您的示例行将禁止以“/ post-”开头的任何网址。 (也就是说,文件位于根目录中,其名称以“post-”开头。)在这种情况下,星号是多余的,因为它是隐含的。
您的问题不清楚页面的位置。如果它们都在根目录中,那么简单的Disallow: /page-
将起作用。如果它们分散在许多不同地方的目录中,那么事情会有点困难。
正如@ user728345所指出的,处理此问题的最简单方法是将您不想抓取的所有页面收集到一个目录中,并禁止访问该目录。但我明白,如果你不能移动所有这些页面。
对于Googlebot,以及支持相同通配符语义的其他机器人(其中包括我的数量惊人的数量),以下内容应该有效:
Disallow: /*page-
这将匹配任何包含“page-”的内容。但是,这也会阻止类似“/test/thispage-123.html”的内容。如果你想阻止这种情况,那么我认为(我不确定,因为我没有尝试过)这样做会有效:
Disallow: */page-
答案 1 :(得分:1)
看起来*将作为Google外卡使用,因此您的答案将阻止Google抓取,但其他蜘蛛不支持通配符。您可以在google上搜索robot.txt通配符以获取更多信息。我会看到http://seogadget.co.uk/wildcards-in-robots-txt/以获取更多信息。
然后我从谷歌的文档中提取了这个:
模式匹配
Googlebot(但不是所有搜索引擎)都尊重某些模式匹配。
要匹配一系列字符,请使用星号(*)。例如,阻止访问以private:
开头的所有>子目录用户代理:Googlebot 禁止:/ private * /
阻止访问包含问号(?)的所有网址(更具体地说,是以您的域名开头的任何网址,后跟任意字符串,后跟问号,后跟任意字符串):
用户代理:Googlebot 不允许:/ *?
要指定匹配网址的结尾,请使用$。例如,要阻止任何以.xls结尾的网址:
用户代理:Googlebot 禁止:/ *。xls $
您可以将此模式匹配与Allow指令结合使用。例如,如果是?表示会话ID,您可能希望排除包含它们的所有网址,以确保Googlebot不会抓取重复的网页。但以#结尾的网址?可能是您希望包含的页面版本。对于这种情况,您可以按如下方式设置robots.txt文件:
用户代理:* 允许:/ ?$ 不允许:/ ?
Disallow:/ *?指令会阻止任何包含?的URL (更具体地说,它将阻止以您的域名开头的任何URL,后跟任何字符串,后跟问号,后跟任何字符串)。
Allow:/ *?$指令允许以?结尾的任何URL? (更具体地说,它将允许任何以您的域名开头的URL,后跟一个字符串,后跟一个?,后面没有字符?)。
通过下载文件或将内容复制到文本文件并另存为robots.txt来保存robots.txt文件。将文件保存到站点的最高级目录。 robots.txt文件必须位于域的根目录中,并且必须命名为“robots.txt”。位于子目录中的robots.txt文件无效,因为机器人仅检查域根目录中的此文件。例如,http://www.example.com/robots.txt是有效位置,但http://www.example.com/mysite/robots.txt不是。
注意:根据我的阅读,这是Google唯一的方法。据官方统计,robots.txt中不允许使用通配符。
答案 2 :(得分:0)
您可以将您不想访问的所有页面放在一个文件夹中,然后使用disallow告诉机器人不要访问该文件夹中的页面。
禁止:/ private /
我对robots.txt的了解不多,所以我不确定如何使用这样的通配符 在这里,它说“你不能在User-agent或Disallow行中使用通配符模式或正则表达式。” http://www.robotstxt.org/faq/robotstxt.html