禁止robots.txt中的数字网址范围

时间:2018-04-17 09:27:01

标签: apache robots.txt

我想禁止使用带有url参数和数字顺序的机器人txt的网址。 我有一个GET参数的网站,如:

example.com/show?id_item=999

layoutSubviews

禁止从id_item 1到500。 有可能在robots.txt中不允许写入“id_item”而没有写入吨(在这种情况下为500)的行吗?

2 个答案:

答案 0 :(得分:2)

取决于范围。你的例子很容易(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

这不允许任何 id_item 开始" 1"," 2"," 3" ," 4"或" 500"。

因此不允许这样的网址:

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$

答案 1 :(得分:1)

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

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

如果你的目标是阻止网页被抓取(例如减少服务器负载)那么你就不走运了。您必须选择阻止所有这些(使用Disallow: /show?id_item=)或不阻止它们。