我有一个使用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 中一定有一种更原生的方法来实现这一点