如何在Django项目中添加robots.txt
在Django项目中添加robots.txt,是为了让搜索引擎只爬取我们想让它爬取的内容。
一般搜索引擎在爬取网站内容时都会先爬取这个文件,然后根据这个文件的设置进行内容的爬取。
首先,先来看一下robots.txt文件的写法。
在robots.txt文件中,每一组配置主要由3个命令组成:
User-agent(必填):设置搜索引擎robot的名称,“*”表示对所有搜索引擎生效。
Allow:希望被搜索引擎爬取的URL。
Disallow:禁止搜索引擎爬取的URL。
另外,在robots.txt文件中支持使用通配符”*”and”$”。
综上所述,我们来看一些例子。
1、允许所有的搜索引擎爬取网站全部内容
User-agent: *
Allow: /
或者
User-agent: *
Disallow:
2、 禁止所有搜索引擎爬取网站的任何内容
User-agent: *
Disallow: /
3、 禁止某个搜索引擎爬取网站内容
禁止百度搜索引擎:
User-agent: Baiduspider
Disallow: /
禁止360搜索引擎:
User-agent: 360Spider
Disallow: /
4、 只允许百度搜索引擎爬取网站内容
User-agent: Baiduspider
Disallow:
5、 禁止搜索引擎爬取指定目录
User-agent: *
Disallow: /admin/
Disallow: /tmp/
6、允许搜索引擎爬取指定目录中的部分内容
User-agent: *
Allow: /tmp/image
Disallow: /tmp/
7、使用”*”限制爬取
禁止访问/media/目录下所有的“gif”文件。
User-agent: *
Disallow: /media/*.gif
8、使用”$”限制爬取
仅允许爬取以”.html”为后缀的URL。
User-agent: *
Allow: .html$
Disallow: /
9、 禁止爬取网站中所有的动态页面
User-agent: *
Disallow: /*?*
10、仅允许百度搜索引擎爬取网站上的网页和“.png”图片
User-agent:Baiduspide
Allow: .png$
Disallow: .jpg$
Disallow: .jpeg$
Disallow: .gif$
Disallow: .bmp$
以上就是关于robots.txt文件的写法。
那么,这个文件放在哪里?如何使用呢?
这个文件应该让搜索引擎在网站的根目录就能够找到。
对于搜索引擎来说,它的URL应该是http(s)://www.domain.com/robots.txt
但是,实际上这个文件我们不会放在项目的根目录中去,因为放进去也访问不了。
根据Django的官方文档,可以采用下面这种方式。
1、将robots.txt文件放入项目的static文件夹中。
2、在nginx的配置文件中添加如下配置。
location /robots.txt { alias /path/to/static/robots.txt; }
当然,并不是所有项目都是用nginx服务器。
我们还可以将robots.txt文件放到 templates 目录中,然后修改urls.py文件。
from django.views.generic import TemplateView path('robots.txt', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),
除了使用robots.txt文件之外,有些搜索引擎还支持nofollow和noarchive标记。
nofollow:禁止搜索引擎跟踪当前页面上的链接
如果不想让搜索引擎追踪某个网页上的链接,且不传递链接的权重,可以在网页的<HEAD> 部分加上:<meta name=”robots” content=”nofollow”>
如果不想让搜索引擎追踪某一条特定链接,可以将标记直接写在某个链接上:<a href=”index.html” rel=”nofollow”>index</a>
如果仅拒绝某一个搜索引擎(例如百度)跟踪网页上的链接,可以在网页的<HEAD> 部分加上:<meta name=”Baiduspider” content=”nofollow”>
noarchive:禁止搜索引擎在搜索结果中显示网页快照
如果拒绝所有搜索引擎显示网页的快照,可以在网页的<HEAD> 部分加上:<meta name=”robots” content=”noarchive”>
如果仅拒绝某一个搜索引擎(例如百度)显示快照,可以在网页的<HEAD> 部分加上:<meta name=”Baiduspider” content=”noarchive”>