如何限制在Django中捕获所有URL

时间:2019-03-23 14:15:53

标签: django django-urls

我有一个带有特定URL的django项目,由“ catchall” URL设置。

因此,我可以转到mysite/living,并使其作为参数传递,并从数据库中获取适当的详细信息。

我的urls.py:

url(r'^$', views.index, name='index'),
url('about/', views.about_view, name='about_view'),
url('contact/', views.contact_view, name='contact_view'),
url('(?P<colcat>[\w\-]+)/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
url('(?P<colcat>[\w\-]+)/$', views.collection_view, name='collection_view'),

我遇到了一个问题,其中任何东西都可以作为参数传递。对于搜索引擎而言尤其如此,其中mysite/index.html/index.html返回有效页面。

是否有一种方法可以限制“允许”匹配的网址?

1 个答案:

答案 0 :(得分:1)

用户浏览时很少手动输入/修改URL。每个人都谷歌搜索并单击搜索引擎显示的任何链接。因此,您只需要限制搜索引擎索引的内容即可。

这可以通过将sitemap.xml文件添加到网站的根目录来完成。

sitemap.xml指定您网站的所有网址以及一些其他信息,以使搜索引擎更容易抓取。如果您不添加sitemap.xml,搜索引擎将尝试对每个可能的URL进行爬网。 如果添加了,则不会。

django已经提供了一个站点地图生成框架:https://docs.djangoproject.com/en/2.1/ref/contrib/sitemaps/