django - 在 django 中更改 robots.txt
问题描述
我使用 Django 创建了一个网站,并使用以下代码添加了 robots.txt:
path('robots.txt', lambda r: HttpResponse("User-agent: *\nDisallow: /", content_type="text/plain")),
在我的主要urls.py 中,它工作得很好,但现在我需要向它添加一些规则.. 怎么做
解决方案
在您的主应用程序中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
推荐阅读
- javascript - 如何模拟条码扫描事件
- javascript - 如何使用 MSAL acquireTokenRedirect() 获取令牌?
- python - 特定日期的 Django DATETIME_FORMAT 不正确(按一年)
- c# - AuthorizationHeader 不再显示在招摇文档中?
- javascript - Reactjs 通过页面和组件发送数据
- python - 记录和导出 conf 到其他模块
- css - Menu.Item 中的 Antd 自动换行
- python - 如何修复“由于 EnvironmentError 无法安装软件包:[WinError 123]”?
- python - python:创建一个读取无效 YAML 文件的测试
- server-side-rendering - 使用服务器端渲染时在客户端第二次获取页面内容