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

时间:2017-04-12 14:49:26

标签: django url-redirection django-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个网址,并且每次网址重定向都是有问题的,因为结构会增长。

我不在我的Django网站上使用Apache,因此无法进行重写规则。 (我在pythonanywhere(网络服务器:Gunicorn))

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

如果使用CommonMiddleware,它会添加尾部斜杠并使用它返回视图(如果在任何urlpattern中找不到没有尾部斜杠的版本)。它可以在the documentation中找到。

答案 2 :(得分:0)

urls.py 毕竟是 Python

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