我应该在robots.txt中对不区分大小写的目录使用不同的大小写拼写吗?

dak*_*kab 9 robots.txt web-crawler case-sensitive

不幸的是,我有一些不区分大小写的服务器,短期内无法更换.有些目录需要从抓取中排除,所以我必须Disallow在我的robots.txt.我们/Img/以此为例.如果我把它全部保持小写......

User-agent: *
Disallow: /img/
Run Code Online (Sandbox Code Playgroud)

...它没有映射到实际的物理路径,并且地址带有/Img/或未/IMG/应用Disallow指令.Crawlers会将这些变体视为不同的路径.

在这件事上看看微软的robots.txt很有趣.他们可能使用IIS服务器,而SERP只是充满了不允许的地址 - 仅限于其他情况.

我能做什么?
陈述以下内容是否有效(并且有效)?

User-agent: *
Disallow: /Img/
Disallow: /img/
Disallow: /IMG/
Run Code Online (Sandbox Code Playgroud)

pla*_*ect 5

原始的robots.txt规范没有说明文件路径中的类型规范,但根据Google的robots.txt规范,文件路径肯定是区分大小写的.谷歌明确指出"Disallow:/ img /"只会阻止"/ img /",而不是"/ Img /"或"/ IMG /".您的解决方案绝对有效,并将解决问题.

话虽这么说,如果我有理由相信备用案例URL实际被抓取,我只会求助于此解决方案,并且它们导致了问题.您可以轻松地将robots.txt文件转换为无法维护的混乱.


uno*_*nor 5

由于该Disallow字段将URL路径(的开头)作为值,并且URL路径区分大小写,因此您的假设是正确的。

因此,是的,如果要阻止所有路径以不区分大小写的/img/ 开头的URL,则需要添加:

Disallow: /img/
Disallow: /IMG/
Disallow: /Img/
Disallow: /IMg/
Disallow: /ImG/
Disallow: /iMg/
Disallow: /iMG/
Disallow: /imG/
Run Code Online (Sandbox Code Playgroud)