我有以下小脚本作为基于CherryPy 3.2.2 的独立应用程序运行(好吧,实际上它是一个压缩版本来演示我要纠正的内容):
import cherrypy
from cherrypy import _cperror
class MyApp:
def __init__(self, **kwargs):
if ('recursive' in kwargs) and kwargs['recursive']:
return
cherrypy.tree.mount(MyApp(recursive=True), '/cgi-bin', {})
def error_page(status, message, traceback, version):
error_template = """\
<html><head><title>%s</title></head>
<body><h1>%s</h1><p>%s</p></body>
</html>"""
return error_template % (status, status, message)
@cherrypy.expose
def script_name(self, **kwargs):
return str(kwargs)
favicon_ico = None
_cp_config = {'error_page.404' : error_page}
if __name__ == '__main__':
cherrypy.quickstart(
MyApp(),
config = {
'global':{
'server.socket_host':'0.0.0.0',
'server.socket_port':8080,
}})
当我在下面或通常在任何地方获取 URL 时/cgi-bin
,我会得到预期的:
404 未找到
找不到路径“/”。
但是,当我获取通过“ PATH_INFO
”的任何内容时,例如/cgi-bin/script_name/foobar
:
404 未找到
没有任何内容与给定的 URI 匹配
如何确保在后一种情况下我得到与前一种相同的错误消息(只有变量是消息中提到的实际路径),同时仍然能够在 URI 下提供内容/cgi-bin/script_name
?