如何在Frappe中实现带参数的URL重定向?
Frappe中带查询参数的网站重定向配置方案
在Frappe框架里,通过hooks.py的website_redirects配置静态重定向很直观,比如:
website_redirects = [ # 不带参数的基础重定向 { "source": "/login", "target": "/entrar" }, ]
但如果要处理带查询参数的URL(比如/login?redirect-to=other-page),直接用上述静态配置无法将参数传递到目标路径/entrar?redirect-to=other-page——静态重定向只会精确匹配路径部分,自动忽略后续的查询参数。
解决方法:用正则匹配保留查询参数
修改website_redirects配置,通过正则表达式捕获路径后的所有内容(包括查询参数),再在目标路径中引用捕获的内容:
website_redirects = [ # 基础静态重定向 { "source": "/login", "target": "/entrar" }, # 带参数的重定向,自动保留查询参数 { "source": r"/login(.*)", "target": r"/entrar\1", "type": 301 # 可选,指定重定向类型:301永久重定向/302临时重定向 } ]
配置说明
source字段用正则表达式r"/login(.*)",匹配所有以/login开头的URL,(.*)会捕获路径之后的所有内容(包括?和后续的查询参数)target字段中的\1对应正则里第一个捕获组的内容,也就是之前捕获的查询参数部分,这样就能完整保留原URL的参数并拼接到目标路径后- 正则字符串前的
r是Python原始字符串标记,避免转义字符被错误解析
内容的提问来源于stack exchange,提问作者J0ANMM
相关产品推荐
相关产品推荐

