You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中使用正则表达式将/mobile/后缀任意路径的URL重定向至/mobile

解决Django中/mobile/后续任意路径重定向至/mobile/的问题

这个问题我之前也碰到过,核心就是你的正则表达式匹配范围太严格,没覆盖到那些带后续路径的请求~

问题原因

你原来的URL规则:

url(r'^mobile/$', views.mobile, name='mobile')

这里的$表示字符串结束,所以只有完全匹配/mobile/(或者Django自动处理的/mobile,取决于APPEND_SLASH设置)的请求才会命中这个规则。而像/mobile/hello/world/xxx这类路径,在mobile/之后还有额外内容,自然匹配不到,也就不会触发重定向。

解决方案

你需要添加一个额外的URL规则,用来捕获所有以/mobile/开头、后面带有任意内容的路径,然后统一重定向到正确的/mobile/页面。具体步骤如下:

  1. 首先保留你原来的URL规则,它负责处理正常的/mobile/请求;
  2. 导入Django的RedirectView(如果还没导入的话);
  3. 添加新的重定向规则,注意必须放在原来的规则之后,避免覆盖正常请求:
from django.views.generic.base import RedirectView

urlpatterns = [
    # 原来的正常匹配规则
    url(r'^mobile/$', views.mobile, name='mobile'),
    # 捕获所有/mobile/后续的任意路径,重定向到mobile命名URL
    url(r'^mobile/.+$', RedirectView.as_view(pattern_name='mobile', permanent=True)),
]

参数说明

  • pattern_name='mobile':指定要重定向到的命名URL(就是你原来规则里的name='mobile'),这样不用硬写URL路径,更灵活;
  • permanent=True:设置为永久重定向(HTTP 301),如果需要临时重定向(HTTP 302),可以改成permanent=False,根据你的业务需求选择。

这样设置后,不管用户输入/mobile/后面跟着什么内容,都会自动跳转到/mobile/页面啦~

内容的提问来源于stack exchange,提问作者Angela Rubchinksy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:17:28