在 Django 中使用额外的斜杠重定向 url 的最佳方法?
Posted
技术标签:
【中文标题】在 Django 中使用额外的斜杠重定向 url 的最佳方法?【英文标题】:Best way to redirect url with extra trailing slashes in Django? 【发布时间】:2013-03-28 23:30:53 【问题描述】:在 django 中将“mywebsite.com///”之类的 url 重定向到“mywebsite.com/”的最佳方法是什么?
我可以在 settings.py 文件中使用与 APPEND-SLASH
相反的设置吗?还是我必须使用
from django.views.generic.simple import redirect_to
并在 urls.py 文件中添加一个 urlpattern?
编辑: 我不想让网页与“mywebsite.com/”相同,而是试图让实际的网址更改为“mywebsite.com/”。很抱歉造成混乱。
【问题讨论】:
你的文件管理器中是否有重写引擎或.htaccess
隐藏文件?
【参考方案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/
【讨论】:
【参考方案2】:如果你愿意,你应该在 urls.py 文件中添加一个匹配这个 url 的 url 模式,加上斜线。
每个模式只是一个正则表达式,所以你可以很容易地告诉它匹配带有额外斜杠的任何 url。
urlpatterns = patterns('django.views.generic.simple',
('^your/url/*$', 'redirect_to', 'url': '/your/url/'),
)
通过将 /* 添加到 url 模式,它将匹配 /your/url/ 后面带有任意数量的斜线。
【讨论】:
以上是关于在 Django 中使用额外的斜杠重定向 url 的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章