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

web.py中seeother()重定向失效:访问/health/返回None而非HAPPY

问题根源与解决方法

问题1:路由匹配顺序导致请求走了错误处理类

web.py的路由是从上到下依次匹配的,你的/(.*)/规则排在/health前面,当请求/health/时,会先被这个正则规则捕获,进入redirect类处理,而非预期的health类。

问题2:重定向方法未返回响应对象

redirect类的GET方法里调用了web.seeother(),但没有返回这个方法生成的响应对象——web.py要求处理方法必须返回响应内容(或响应对象),否则会默认返回None。


修复方案(任选其一)

方案1:让重定向类正确返回响应

修改redirect类的GET方法,返回web.seeother()的结果,这样请求/health/会被重定向到/health,最终得到HAPPY:

class redirect:
    def GET(self, path):
        return web.seeother('/' + path)

方案2:调整路由顺序并添加尾斜杠路由(推荐)

把/health相关路由移到正则路由前面,同时添加/health/直接指向health类,避免重定向,直接返回结果:

urls = (
        '/', 'index',
        '/health', 'health',
        '/health/', 'health',
        '/(.*)/', 'redirect',
)

方案3:优化正则路由排除特定路径

如果不想调整路由顺序,可以修改正则规则,排除/health/这类特定路径,让它能匹配到后面的/health路由:

urls = (
        '/', 'index',
        '/(?!health)(.*)/', 'redirect',  # 不匹配以health开头的带尾斜杠路径
        '/health', 'health'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:02:37