在Django中使用额外的尾部斜杠重定向url的最佳方法?

时间:2013-04-06 15:38:45

标签: python django redirect django-urls

在django中将“mywebsite.com///”等网址重定向到“mywebsite.com/”的最佳方法是什么?

我可以在settings.py文件中使用哪种设置与APPEND-SLASH相反或者我必须使用

from django.views.generic.simple import redirect_to

并在urls.py文件中添加urlpattern?

编辑: 我不想让网页与“mywebsite.com/”相同,我正在尝试将实际网址更改为“mywebsite.com/”。对不起,感到困惑。

2 个答案:

答案 0 :(得分:1)

如果您愿意,您应该在urls.py文件中添加一个与此网址匹配的网址格式,并添加斜杠。

每个模式都只是一个正则表达式,所以你可以很容易地告诉它匹配任何带有额外斜杠的url。

urlpatterns = patterns('django.views.generic.simple',
('^your/url/*$', 'redirect_to', {'url': '/your/url/'}),
)

通过在url模式中添加/ *,它将匹配/ your / url /后面的任意数量的斜杠。

答案 1 :(得分:1)

如果你想在应用程序级别执行此操作,我将避免创建新的urlconf规则,特别是如果它是全局的。

你可以让自己的中间件自动处理这个重定向,因为django在公共中间件中使用APPEND_SLASH设置附加斜杠这里是参考代码:https://github.com/django/django/blob/master/django/middleware/common.py#L66-80

此外,您可能会发现此博客文章中的解决方案很有用:http://gregbrown.co.nz/code/append-or-remove-slash/