Django - 从斜杠重定向到非斜杠

Posted

技术标签:

【中文标题】Django - 从斜杠重定向到非斜杠【英文标题】:Django - Redirecting from trailing slash to non-trailing slash 【发布时间】:2011-10-19 19:39:00 【问题描述】:

当我使用正则表达式 ^/some/url/$ 时,我喜欢 Django 如何从 /some/url 重定向到 /some/url/,但反之亦然,例如当我使用正则表达式 ^/some/url$ 时,从 /some/url/ 重定向到 /some/url

如何从我的 django 应用程序内部添加此功能,而不是使用手动 mod_rewrite?

【问题讨论】:

不要。如果 ULR 不引用实际文件,则应以斜杠结尾。 @Daniel 当页面是文章的列表或“文件夹”时,我宁愿看到尾部斜杠,而当页面是单篇文章时,我宁愿看到尾部斜杠。例如。 /category/ 用于文章列表,/category/article-title 用于单篇文章。它为用户提供有关他们可以期待什么类型的页面的信息。 django urls without a trailing slash do not redirect的可能重复 【参考方案1】:

我已经开始工作了。我在我的 URL RegEx 中添加了/?,就在末尾的$ 符号之前。然后我将此添加到我的views.py

from django.shortcuts import redirect
# ...
def some_view(request, some_param):
    if request.path[-1] == '/':
        return redirect(request.path[:-1])
    # ...

【讨论】:

以上是关于Django - 从斜杠重定向到非斜杠的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从URL创建一个重定向规则,斜杠为没有它的一个?

使用 .htaccess 重定向 404 而不重定向尾部斜杠

带有 HTTPS 重定向的 Nginx 入口控制器尾部斜杠

如果没有斜杠,Nginx 会导致 301 重定向

如何在Symfony 4.1中禁用尾部斜杠重定向?

删除尾部斜杠重定向循环