1

我有以下小脚本作为基于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

4

0 回答 0