禁止 robots.txt 中的数字 URL 范围

Disallow range of numeric URLs in robots.txt

我想禁止带有 url 参数和数字顺序的 robots txt 网址。 我有一个带有 GET 参数的网站,例如:

example.com/show?id_item=1

example.com/show?id_item=999

禁止从 id_item 1 到 500。 可以在 robots.txt 范围内禁止 "id_item" 而不写入大量行(在这种情况下为 500 行)吗?

不,除了有 500 行,每个数字一行之外,robots.txt 确实没有办法做到这一点。 (不是推荐!)最接近的是通配符扩展“*”,但这将匹配任何长度的字符串,由任何字符组成。无法匹配特定的数字模式,而这是匹配数字范围所需要的。

如果您的目标是将这些页面排除在搜索引擎之外,那么最好的方法是添加代码以在 ID 处于目标范围内时使用 robots meta tags or x-robots-tag headers 选择性地阻止这些页面。

如果您的目标是完全防止网页被抓取(例如减少服务器负载),那么您就不走运了。您将不得不选择阻止所有这些(Disallow: /show?id_item=)或 none 个。

这取决于范围。您的示例很简单(1 到 999,不允许 1 到 500):

User-agent: *
Disallow: /show?id_item=1
Disallow: /show?id_item=2
Disallow: /show?id_item=3
Disallow: /show?id_item=4
Disallow: /show?id_item=500

这不允许“1”、“2”、“3”、“4”开头的任何id_item ”,或“500”。

所以 URL 这样的内容将被禁止:

https://example.com/show?id_item=1
https://example.com/show?id_item=19
https://example.com/show?id_item=150
https://example.com/show?id_item=1350
https://example.com/show?id_item=1foo

如果您希望 ID 高于 999,则它不再像那样工作(因为像“1001”这样的 ID 也将被禁止)。然后你可能不得不使用 Allow(但这个特性不是原始 robots.txt 规范的一部分,所以不一定得到所有消费者的支持),并且列表变得更长。

根据范围,$ 可能会有用。它表示 URL 的结尾(但这也是一个不属于原始 robots.txt 规范的功能,因此它不一定被所有 robots.txt 解析器支持)。例如,以下行只会阻止 ID“500”:

Disallow: /show?id_item=500$