4

デフォルトでは、SimpleHTTPServer はindex.htmlインデックス ファイルとして使用します。それらを無効にして、常にディレクトリ インデックスを表示したいと考えています。

どうやってやるの?ここのドキュメントはそれについて何も述べていません

4

2 に答える 2

5

簡単な方法:

インデックス ファイルの名前を別の名前に変更します

より複雑なアプローチ:

SimpleHTTPRequestHandlerのtranslate_pathメソッドを次のようにオーバーライドする必要があります。

import BaseHTTPServer
import SimpleHTTPServer
server_address = ("", 8888)
PUBLIC_RESOURCE_PREFIX = '/public'
PUBLIC_DIRECTORY = '/path/to/protected/public'

class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def translate_path(self, path):
        if self.path.startswith(PUBLIC_RESOURCE_PREFIX):
            if self.path == PUBLIC_RESOURCE_PREFIX or self.path == PUBLIC_RESOURCE_PREFIX + '/':
                return PUBLIC_DIRECTORY + path[len(PUBLIC_RESOURCE_PREFIX):]
        else:
            return SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self, path)

httpd = BaseHTTPServer.HTTPServer(server_address, MyRequestHandler)
httpd.serve_forever()
于 2016-11-22T11:00:30.163 に答える
0

send_headメソッドを上書きする必要があります

次の行を無効にするだけです

        for index in "index.html", "index.htm":
            index = os.path.join(path, index)
            if os.path.exists(index):
                path = index
                break
于 2016-11-22T15:32:26.613 に答える