首页 > 解决方案 > 在 django 中更改 robots.txt

问题描述

我使用 Django 创建了一个网站,并使用以下代码添加了 robots.txt:

path('robots.txt', lambda r: HttpResponse("User-agent: *\nDisallow: /", content_type="text/plain")), 在我的主要urls.py 中,它工作得很好,但现在我需要向它添加一些规则.. 怎么做

标签: django

解决方案


在您的主应用程序中urls.py

from django.urls import path, include
from django.views.generic.base import TemplateView


urlpatterns = [
    # If you are using admin
    path('admin/', admin.site.urls),
    path(
        "robots.txt",
        TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),
    ),
    path(
        "sitemap.xml",
        TemplateView.as_view(template_name="sitemap.xml", content_type="text/xml"),
    ),
]

然后转到您的模板根文件夹并创建一个 robots.txt 文件,您可以添加类似这样的内容

User-Agent: *
Disallow: /private/
Disallow: /junk/

再次进入您的模板根文件夹并创建另一个文件sitemap.xml,您可以添加类似这样的内容或使用站点地图生成器正确完成这是一个示例:

<url>
<loc>https://examplemysite.com</loc>
<lastmod>2020-02-01T15:19:02+00:00</lastmod>
<priority>1.00</priority>
</url>

现在如果你运行 python manage.py runserver 你可以测试它127.0.0.1:8000/sitemap.xml并且/robots.txt它会工作。但这在您的生产服务器中不起作用,因为您需要让 nginx 知道这一点并提供路径。

因此,您将需要 ssh 进入您的服务器,例如在 nginx 中,您应该有一个在构建时命名的配置文件。你应该 cd 进入/etc/nginx/sites-available那个文件夹,你应该有默认文件(你应该不理会它),并且应该有另一个你命名的文件,通常应该与你的项目名称或网站名称相同。用 nano 打开该文件,但先备份。接下来,您可以为这两个文件添加路径,如下所示:

请注意路径,但显然您可以查看文件,并且您应该知道您应该看到静态文件或媒体的路径。所以你可以做这样的事情。

location  /robots.txt {
    root  /home/myap-admin/projects/mywebsitename/templates;
}
location  /sitemap.xml {
    root  /home/myap-admin/projects/mywebsitename/templates;
}

/home/myap-admin/projects/mywebsitename/templates您应该知道您的 mywebsitename 的路径。这只是通向模板文件夹的示例路径。

确保你然后运行service nginx restart


推荐阅读