CherryPy在缺少参数错误时重定向到根目录



我有一个使用CherryPy的web服务器。如果用户尝试访问一个需要输入参数的页面,我希望他们能重定向到根页面。如果用户尝试直接访问:

localhost:8080/page

他们会收到一条错误消息,看起来像是:

404未找到

缺少参数:参数1、参数2、,。。。

相反,我希望用户重定向到:

localhost:8080/

我尝试更改cherrypy.config,以便每当出现404时,它都会检查错误消息,并查看问题是否缺少参数。如果不是这个问题,我希望显示默认的404页面。我的代码如下:

cherrypy.config.update({'error_page.404': error_page_404})

带有函数error_page_404:

def error_page_404(status, message, traceback, version):
if message.startswith('Missing parameters'):
raise cherrypy.HTTPRedirect('/')
else:
raise cherrypy.HTTPError(status, message)

但是当我尝试访问时

localhost:8080/page,

我得到以下错误:

404未找到

缺少参数:参数1,参数2

此外,自定义错误页面失败:

cherrypy_cperror。HTTPRedirect:([]http://127.0.0.1:8080/'],303(

有什么想法吗?非常感谢。

我已经设法通过返回重定向到根目录的HTML代码来解决问题:

def error_page_404(status, message, traceback, version):
if message.startswith('Missing parameters'):
return """<meta http-equiv="Refresh" content="0; url='/'" />"""
else:
return f'<h2>404 Not Found</h2>n' 
f'<p>{message}</p>'

虽然这对我来说是有效的,但我忍不住觉得在cherrypy 中一定有一种更原生的方法来实现这一点

最新更新