如何在 robots.txt Disallow 指令中转义 $?
Posted
技术标签:
【中文标题】如何在 robots.txt Disallow 指令中转义 $?【英文标题】:how to escape $ in robots.txt Disallow directive? 【发布时间】:2017-06-13 15:32:44 【问题描述】:robots.txt 将$
处理为一个特殊字符来标识模式的结束。
虽然,googlebot 正在从脚本标签中的 JS 模板中解析一些 href,例如:
<a href="$object.path"> $object.name</a>
编码后,google bot 尝试到达mySite.com/$%7Bobject.path%7D
,它以 404s 结束。
为了解决这个问题,我想通过向我的 robots.txt 添加匹配指令来禁止抓取此类网址。
但是“按原样”使用 $ 是行不通的:
Disallow: /$%7Bobject.path%7D$
我找到的唯一可行的解决方案是使用通配符:
Disallow: /*%7Bobject.path%7D$
不过,我真的很好奇是否有办法逃脱那个特定的 $ 符号?
谢谢。
编辑:
在使用 google robots.txt 测试工具进行更多测试后,我得到了一些奇怪的结果。根据这个工具指令:
Disallow: /*%7Bobject.path%7D$
不适用于/$%7Bobject.path%7D
,而其他工具告诉我它匹配(如https://technicalseo.com/seo-tools/robots-txt/)。
在谷歌的测试工具中起作用的是将括号未编码的指令放入指令中:
Disallow: /*object.path$
我无法理解它,所以我将这两个版本都放在了我的 robots.txt 中。
【问题讨论】:
我想阻止包含文字*
的网址,看来我们运气不好
【参考方案1】:
Googlebot 和其他抓取工具支持 $
,但它不是机器人排除协议标准的一部分。
该标准不包含任何转义字符,Google 的文档也没有提及。
您是否尝试过使用美元编码?:
Disallow: /%24%7Bobject.path%7D$
【讨论】:
恐怕这不匹配,因为谷歌机器人不会对 $ char 进行百分比编码:/以上是关于如何在 robots.txt Disallow 指令中转义 $?的主要内容,如果未能解决你的问题,请参考以下文章
网站迁移服务器后CPU内存飙升,设置robots.txt 问题