我将以下小脚本作为基于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,
}})
当我在/cgi-bin
下面或通常在任何地方获取网址时,我会得到预期的结果:
404 Not Found
路径&#39; /&#39;没找到。
但是,当我获取任何通过&#34; PATH_INFO
&#34;例如/cgi-bin/script_name/foobar
我得到:
404 Not Found
没有任何东西与给定的URI相匹配
我如何确保在后一种情况下我获得与前者相同的错误消息(只有变量是消息中提到的实际路径),同时仍然能够在URI /cgi-bin/script_name
下提供内容?