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

求助:Django中用正则统一匹配末尾含固定字符串的URL

解决统一匹配固定结尾URL的重定向问题

嘿,我来帮你搞定这个重定向的问题!你的需求是统一匹配所有以/the-same-string结尾(无末尾斜杠)的URL,之前的正则没生效是因为它们的匹配逻辑有问题,我来拆解下:

  • 你写的第一个正则^[a-zA-Z0-9_]+/the-same-string只能匹配单级路径+固定字符串的情况(比如/abc/the-same-string),但像/some-of-my-urls/the-same-string这种多级路径就匹配不到——因为[a-zA-Z0-9_]+只能匹配不含斜杠的一段字符,没法覆盖带斜杠的多级路径。
  • 第二个正则^./the-same-string里的.是正则里的特殊字符,意思是匹配任意单个字符,而不是任意长度的字符序列,所以它只能匹配类似/x/the-same-string这种前面只有一个字符的URL,自然也不符合你的需求。

正确的正则规则

你需要的是能匹配任意多级路径+固定结尾字符串的正则,直接用这个就可以:

url(r'^.+/the-same-string$', redirect_func),

我来解释下这个正则的每个部分:

  • ^:匹配URL的起始位置,确保从开头开始匹配
  • .+:匹配任意字符(除了换行符)1次或多次,这样就能覆盖所有多级路径的情况
  • /the-same-string:你要匹配的固定结尾字符串
  • $:匹配URL的结束位置,确保URL正好以/the-same-string结尾,不会匹配到后面还有额外内容的URL(比如/the-same-string/extra)

额外提示

如果之后你的URL可能偶尔出现末尾带斜杠的情况,可以把正则调整为兼容可选斜杠的版本:

url(r'^.+/the-same-string/?$', redirect_func),

这里的/?表示斜杠是可选的,既匹配/the-same-string也匹配/the-same-string/。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:01