大家好,我是飞小优,经常有用户问到关于Robots文件中Disallow的用法,其中有些会让大家摸不着北,比如以下几种类型,究竟是什么意思以及在实际操作过程中怎么解决?
Disallow: /aa //aa为自定义文件名
Disallow: /aa/ //aa为自定义文件名
Disallow: /aa/* //aa为自定义文件名
Disallow: /aa/$ //aa为自定义文件名
在robots.txt 文件中,Disallow
指令用于告诉搜索引擎哪些页面不应被收录,这很好理解。
先说/aa和/aa/
Disallow: /aa
和 Disallow: /aa/
之间的区别在于后者包含了一个额外的斜杠,这可能会影响到匹配的URL路径。举例说明:
假设您有一个网站,其 URL 结构如下:
/aa/
/aa/index.html
/aa/bb
/aa/bb.html
在 robots.txt 文件中添加 Disallow: /aa/ 规则时,搜索引擎爬虫将不会抓取 /aa/index.html 和 /aa/bb。然而,/aa/bb.html 仍将被抓取,因为它以 /aa/ 结尾,但并非以 /aa/ 开头。
Disallow: /aa
指示搜索引擎不要抓取以/aa
开头的所有URL。例如,/aa/bb.html
和/aa/cc/dd.html
都会被包括在内。/aa
包含了/aa/bb.html
及/aa/cc/dd.html
。
而Disallow: /aa/
则指示搜索引擎不要抓取以/aa/
开头的所有URL。这里的斜杠意味着URL必须以/aa/
准确无误地结束,所以像/aa/index.html
或/aa/bb
这样的URL将不会被包括在内,但/aa/bb.html
会被包含在内。
也就是意味着,如果想要禁止抓取特定目录下的所有内容,请使用 Disallow: /aa/
。如果想要禁止抓取以特定字符串开始的所有URL(无论它们是否是目录),请使用 Disallow: /aa
。
若还不能够理解,那就在看以下例子 ,例如:
搜索引擎蜘蛛将不会抓取以下路径:
http://www.example.com/aa/
http://www.example.com/aa/index.html
http://www.example.com/aa/about.html
http://www.example.com/aa/subdirectory/
http://www.example.com/aa/subdirectory/file.html
但是,如果存在一个目录名为 “aaa” 的情况,则该目录不在禁止抓取的范围内,因为它的名称与 “/aa/” 不匹配。也就是说,搜索引擎蜘蛛仍然可以抓取如下的路径:
http://www.example.com/aaa/
http://www.example.com/aaa/index.html
总结来说:
Disallow: /aa/
:禁止爬取以/aa/
开头的任何目录及其子目录;Disallow: /aa
:禁止爬取/aa
目录本身,但允许爬取其子目录。
换言之 ,Disallow:/aa/
屏蔽不包含自身,表示以/aa/开头的具体目录和具体文件,Disallow: /aa
是包含所有以aa开头的所有目录及所有文件。
因此在robots文件配置中需要书写不同规则来应用到实际项目需求中。
再谈相关变体区别
但是关于Disallow: /aa
和其变体的解释有所区分:
Disallow: /aa/
这个指令表示禁止任何搜索引擎蜘蛛抓取以”/aa/”开头的任何目录及其下的所有文件。例如,”/aa/about.html” 、”/aa/images/”等都会被禁止抓取。Disallow: /aa/*
这个指令表示禁止任何搜索引擎蜘蛛抓取以”/aa/”开头的任何目录及其下的所有文件。与Disallow: /aa/
类似,它也会阻止对”/aa/123.html” 、”/aa/def/123.html” 等子目录和文件的访问。Disallow: /aa/$
这个指令稍微有所不同。$
符号表示通配符,它可以匹配任何字符串。因此,Disallow: /aa/$
将会禁止任何以”/aa/”开头的目录及其最后一个文件的访问。这意味着,只有当文件名在”/aa/”之后且没有其他内容时,才会生效。例如,”/aa/images.jpg” 会被禁止抓取,但”/aa/images/”不会。
so,这三个指令的主要目的是告诉搜索引擎蜘蛛不要抓取以”/aa/”开头的任何内容。它们之间的主要区别在于对子目录和文件的处理方式。
Disallow: /aa/
和Disallow: /aa/*
会阻止所有子目录和文件的访问;Disallow: /aa/$
只会阻止最后一个文件的访问。
如何理解“Disallow: /aa/$
只会阻止最后一个文件的访问?”
让我们来看几个例子以便更好地理解:
- 禁止抓取的示例:
/aa/image.jpg
: 这个网址被禁止抓取,因为”/aa/”后面紧跟的是”image.jpg” ,这符合$
通配符的规则;/aa/temp/file.txt
: 同样,这个网址也被禁止抓取,因为”/aa/”后面紧跟的是”temp/file.txt” 。
- 允许抓取的示例:
/aa/images
: 这个网址是允许被抓取的,因为”/aa/”后面并没有紧跟任何文件名,而是另一个目录名”images”。在这种情况下,$
通配符没有匹配到末尾的元素,因此该网址不受Disallow
规则的限制;/aa/otherdir
: 类似地,这个网址也是允许被抓取的,因为”/aa/”后面跟着的是另一个目录名”otherdir”而不是文件名。
所以,Disallow: /aa/$
指令目的在于禁止搜索引擎机器人抓取任何位于”/aa/”目录下的文件,但不影响其子目录的抓取。如果希望禁止整个”/aa/”目录及其所有内容(包括子目录和文件),则需要使用Disallow: /aa/
就可以了。
应用场景举例
比如经常遇到的网站资讯下的列表分页器问题,如:https://xxx.com/news/page/2
本质上爬虫是可以抓取的,但是针对于这种无意义的页面可以 告诉爬虫不要抓取,因此在此种情形下就需要用到该规则Disallow: /tutorial/page/
以上就是关于Disallow:/XXX与Disallow: /XXX/等变体的介绍及Robots.txt配置方法。更多问题可以详细关注SEO实战教程。