谷歌:在robots.txt中禁用特定的查询字符串

13
http://www.site.com/shop/maxi-dress?colourId=94&optId=694
http://www.site.com/shop/maxi-dress?colourId=94&optId=694&product_type=sale

我有成千上万个类似上面的URL。不同的组合和名称。 我还有这些URL的副本,其中带有查询字符串product_type=sale

我想禁止Google索引任何带有product_type=sale的内容。

在robots.txt中是否可能实现此操作?


1
此问题似乎与主题无关,因为它涉及SEO。 - John Conde
2个回答

23

Google支持在robots.txt文件中使用通配符。下面的指令会阻止Googlebot爬取带有任何参数的网页:

Disallow: /*?


Disallow: /*?

这不会阻止许多其他蜘蛛爬取这些URL,因为通配符不是标准的robots.txt的一部分。

谷歌可能需要一段时间才能从搜索索引中删除您已阻止的URL。额外的URL可能仍会被索引数月。在它们被阻止后,您可以使用网络管理员工具中的“删除URL”功能来加快此过程。但那是一个手动过程,您必须粘贴每个要删除的单独URL。

如果Googlbot找不到没有参数的URL版本,则使用此robots.txt规则也可能会损害您网站的谷歌排名。如果您经常链接到带参数的版本,则可能不想在robots.txt中阻止它们。最好使用以下其中之一的选项。


更好的选择是在每个页面上使用rel canonical元标签

因此,您的两个示例URL将在head部分中添加以下内容:

<link rel="canonical" href="http://www.site.com/shop/maxi-dress">

这可以告诉Googlebot不要索引太多页面变量,只索引您选择的URL的“规范”版本。与使用robots.txt不同的是,即使它们使用各种URL参数,Googlebot仍然能够爬行并为它们分配值。


另一个选择是登录Google网站管理员工具,并使用“抓取”部分中的“URL参数”功能。

在那里,点击“添加参数”。您可以将“product_type”设置为“不影响页面内容”,以便Google不会爬行和索引具有该参数的页面。

enter image description here

对于每个不更改页面的参数都做同样的操作。


这应该与moobot的答案结合起来。我认为奖励他/她是公平的,因为他们很新。 - TheBlackBenzKid
如果我将以下内容添加到我的robots.txt文件中: User-Agent: * Disallow: /flickering/*? 那么这只是禁止了位于flickering文件夹下的页面查询,但它仍然会索引该文件夹中的所有页面吗? - Richard Young

10

这很容易实现。在您的robots.txt文件中添加以下行:

Disallow: /*product_type=sale

前面的通配符(*)表示包含product_type=sale的任何URL都将不再被Google爬取。

虽然它们可能仍然存在于Google的索引中(如果它们之前存在),但Google将不再爬取它们,当在Google搜索中查看时,会显示:由于该网站的robots.txt,此结果的描述不可用-了解更多。

更多信息请参阅:Robots.txt规范


1
你如何从索引中删除它们? - TheBlackBenzKid
3
将URL添加到robots.txt文件中不会立即从索引中删除它们。这只是防止Googlebot再次爬取它们。要从Google的索引中删除URL,您需要添加noindex元标记或rel canonical元标记(并让Google爬取它们);或在将它们添加到robots.txt文件后手动输入每个URL以进行网站管理员工具的删除请求。 - Stephen Ostermiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接