如何限制捕获django中的所有url

How to limit catch all urls in django

我有一个带有特定 url 的 django 项目,由 'catchall' URL.

设置

这样我就可以转到 mysite/living,让它作为参数传递 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 returns 一个有效页面。

有没有办法限制匹配 'allowed' 的网址?

用户不太可能在浏览时手动 enter/modify URL。每个人都只需谷歌搜索并点击搜索引擎显示的任何内容 link。所以,你只需要限制搜索引擎索引的内容。

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

sitemap.xml 指定您网站的所有 url 以及一些附加信息,以便搜索引擎更容易抓取。如果您不添加 sitemap.xml,搜索引擎会尝试抓取所有可能的 url。 如果添加他们不会。

已经有django提供的sitemap生成框架:https://docs.djangoproject.com/en/2.1/ref/contrib/sitemaps/