次の小さなスクリプトを、 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
下または一般的にどこでもURL をフェッチすると、期待される結果が得られます。
404お探しのページが見つかりませんでした
パス「/」が見つかりませんでした。
ただし、「PATH_INFO
」を渡すものを取得すると、次のよう/cgi-bin/script_name/foobar
になります。
404お探しのページが見つかりませんでした
指定された URI に一致するものはありません
後者の場合、前者と同じエラー メッセージ (メッセージに記載されている実際のパスは変数のみ) が表示され、URI の下でコンテンツを提供できることを確認するにはどうすればよい/cgi-bin/script_name
ですか?