如何管理 Django urls 别名重定向?

how to manage Django urls alias redirections?

我想正确设置我的 urls,避免像下面的例子那样做,因为它会影响我的 Google 索引:

urls.py(错误的方式):

url(r'^virtual-reality/$', views.virtualreality, name="virtual-reality"),
url(r'^virtual-reality$', views.virtualreality, name="virtual-reality"),
url(r'^vr/$', views.virtualreality, name="virtual-reality"),
url(r'^vr$', views.virtualreality, name="virtual-reality"),

如您所见,我希望 vr/vrvirtual-reality/virtual-reality 重定向到同一页面。我的网站上有超过 30 个 url,并且像这样进行每个 url 重定向都是有问题的,因为结构在增长。

我的 Django 站点上没有使用 Apache,因此无法制定重写规则。 (我在 pythonanywhere(网络服务器:Gunicorn))

在不影响我的 google 搜索索引的情况下,在同一视图中重定向所有类型的别名并避免输入每个 url 与 urls.py 相同视图的最佳方法是什么?

最好的方法是使用 django 重定向应用程序 https://docs.djangoproject.com/en/1.10/ref/contrib/redirects/ 您可以使用它轻松管理来自管理员的重定向。

解决尾部斜杠问题的另一种方法是在正则表达式中使用 ? 标志。

url(r'^virtual-reality/?$', views.virtualreality, name="virtual-reality"),
url(r'^vr/?$', views.virtualreality, name="virtual-reality"),

如果使用 CommonMiddleware,它会添加尾部斜杠和 return 视图(如果没有尾部斜杠的版本在任何 urlpattern 中都找不到)。可见于the documentation.

urls.py毕竟是Python

只要写一个合适的数据结构,可以捕获你想要的 并使用循环生成包含 url() 调用的列表。