阻止 google robots 获取包含特定单词的 URL

Posted

技术标签:

【中文标题】阻止 google robots 获取包含特定单词的 URL【英文标题】:block google robots for URLS containing a certain word 【发布时间】:2022-01-12 14:03:21 【问题描述】:

我的客户有很多他们不想被谷歌索引的页面 - 它们都被称为

http://example.com/page-xxx

所以它们是 /page-123/page-2/page-25

有没有办法阻止谷歌使用 robots.txt 将任何以 /page-xxx 开头的页面编入索引

会有这样的工作吗?

Disallow: /page-*

谢谢

【问题讨论】:

所以我发现上面的方法不起作用,有什么建议吗? 【参考方案1】:

首先,写有Disallow: /post-* 的行不会阻止抓取“/page-xxx”形式的页面。您的意思是在 Disallow 行中添加“page”,而不是“post”?

Disallow 实质上是“禁止以该文本开头的 url”。因此,您的示例行将禁止任何以“/post-”开头的网址。 (也就是说,该文件位于根目录中,并且它的名称以“post-”开头。)在这种情况下,星号是多余的,因为它是隐含的。

您的问题不清楚页面在哪里。如果它们都在根目录中,那么一个简单的Disallow: /page- 就可以了。如果它们分散在许多不同地方的目录中,那么事情就有点困难了。

正如@user728345 指出的那样,处理此问题的最简单方法(从robots.txt 的角度来看)是将所有您不想爬入的页面收集到一个目录中,并禁止对其进行访问。但如果您不能移动所有这些页面,我理解。

特别是对于 Googlebot 和其他支持相同通配符语义的机器人(数量惊人,包括我的),以下应该可以工作:

Disallow: /*page-

这将匹配任何包含“page-”的任何地方。但是,这也会阻止“/test/thispage-123.html”之类的内容。如果您想防止这种情况发生,那么我认为(我不确定,因为我没有尝试过)这会起作用:

Disallow: */page-

【讨论】:

嗨 - 是的,页面/帖子只是一个错字。这是遥远的过去,因此无法检查您的解决方案,但我刚刚收到通知说人们仍在查看此内容,所以我想我会纠正错字。如果有人可以确认 Jim 的解决方案,我可以标记为正确。【参考方案2】:

看起来 * 将用作 Google 通配符,因此您的回答将使 Google 无法抓取,但其他蜘蛛程序不支持通配符。您可以在 Google 上搜索 robots.txt 通配符以获取更多信息。我会看到http://seogadget.co.uk/wildcards-in-robots-txt/ 了解更多信息。

然后我从 Google 的文档中提取了这个:

模式匹配

Googlebot(但不是所有搜索引擎)尊重某些模式匹配。

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

用户代理:Googlebot 禁止:/private*/

阻止对包含问号 (?) 的所有 URL 的访问(更具体地说,任何以您的域名开头、后跟任何字符串、后跟问号、后跟任何字符串的 URL):

用户代理:Googlebot 不允许:/*?

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

用户代理:Googlebot 禁止:/*.xls$

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

用户代理:* 允许:/?$ 不允许:/?

不允许:/*?指令将阻止任何包含 ? (更具体地说,它将阻止任何以您的域名开头、后接任何字符串、后接问号、后接任何字符串的 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 中正式不允许通配符用于禁止。

【讨论】:

我已经检查过了 - 似乎不起作用。检查this - 并且不允许将其添加到googles robots.txt builder中 这不起作用,您可以选择阻止目录(如果所有目录都在其中)或尝试使用 phpjavascript 或其他动态添加元内容/链接内容您的选择。 我建议 PHP 或类似的东西,因为谷歌可能不会加载 Javascript。 @JoreLuisBorges,注意 Googlebot 语法不会通过测试验证。你必须针对谷歌自己的工具进行测试,我相信你必须手动添加它。您可以在这里阅读更多内容google.com/support/webmasters/bin/answer.py?answer=156449 只需点击手册部分。 似乎有点奇怪,谷歌自己的网站管理员工具无法验证该方法!在 endi 中,我已经找到了一种通过 cms 在每个页面的元数据中添加机器人指令的方法。【参考方案3】:

您可以将所有不想访问的页面放在一个文件夹中,然后使用 disallow 告诉机器人不要访问该文件夹中的页面。

不允许:/private/

我对 robots.txt 不太了解,所以我不确定如何使用这样的通配符 在这里,它说“您不能在 User-agent 或 Disallow 行中使用通配符模式或正则表达式。” http://www.robotstxt.org/faq/robotstxt.html

【讨论】:

不幸的是,这需要手动移动大约 1000 个文件!

以上是关于阻止 google robots 获取包含特定单词的 URL的主要内容,如果未能解决你的问题,请参考以下文章

tag for Google

检查 Robots.txt 中的特定文本

Xpath:如果包含特定单词,则获取href

如何使用Stemmer或Lemmatizer来阻止特定的单词

jQuery 选择器:获取包含特定单词的第一个元素类的内容

如何从 Google Cloud Storage 中获取特定对象元数据信息?