如何在 robots.txt 文件的 Disallow 指令中转义 $ 符号?

3

robots.txt将$作为特殊字符处理,用于标识模式的结尾。

然而,Googlebot正在解析一些JS模板中的hrefs,例如在script标签内:

<a href="${object.path}"> ${object.name}</a>

编码后,谷歌机器人尝试访问 mySite.com/$%7Bobject.path%7D,但最终导致404错误。

为了解决这个问题,我想通过在robots.txt中添加匹配的指令来禁止爬取此类网址。

但是直接使用"$"符号不起作用:

Disallow: /$%7Bobject.path%7D$

我找到的唯一可行的解决方案是使用通配符字符:
Disallow: /*%7Bobject.path%7D$

虽然我真的很好奇是否有一种方法可以避免特定的$符号?

谢谢。

编辑:

在使用Google robots.txt测试工具进行更多测试后,我得到了一些奇怪的结果。根据这个工具的指示:

Disallow: /*%7Bobject.path%7D$ 

当其他工具告诉我它匹配时(如https://technicalseo.com/seo-tools/robots-txt/),/$%7Bobject.path%7D无法正常工作。

在google的测试工具中有效的方法是在指令中使用未编码的括号:

Disallow: /*{object.path}$

我无法理解它的意思,所以我将两个版本都放在我的robots.txt文件中。

我有一些带有字面上的 * 的 URL 需要屏蔽,看起来我们运气不佳。 - Hashbrown
1个回答

0

Googlebot和其他网络爬虫支持$,但它不是机器人排除协议标准的一部分。

该标准不包括任何转义字符,Google的文档也没有提到它。

您尝试过使用美元编码吗?

Disallow: /%24%7Bobject.path%7D$

很抱歉,这不会匹配,因为Google机器人不对$字符进行百分号编码:/ - gonzoyumo

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