如何在Django项目中添加robots.txt

django2024-07-28287

在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”>