【问题标题】:Best way to redirect url with extra trailing slashes in Django?在 Django 中使用额外的斜杠重定向 url 的最佳方法?
【发布时间】: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隐藏文件?

标签: python django redirect django-urls


【解决方案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/ 后面带有任意数量的斜线。

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 2014-02-08
      • 2013-04-09
      • 2011-01-24
      • 2010-12-08
      • 2015-08-09
      • 2011-10-19
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多