【发布时间】:2017-04-06 00:17:47
【问题描述】:
默认情况下,SimpleHTTPServer 使用index.html 作为索引文件,我想禁用它们并始终显示目录索引。
我该怎么做? document here 对此只字未提
【问题讨论】:
标签: python http server directoryindex
默认情况下,SimpleHTTPServer 使用index.html 作为索引文件,我想禁用它们并始终显示目录索引。
我该怎么做? document here 对此只字未提
【问题讨论】:
标签: python http server directoryindex
将索引文件重命名为其他任何内容
您必须使用以下内容覆盖 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()
【讨论】:
我应该覆盖send_head 方法
只需禁用以下几行
for index in "index.html", "index.htm":
index = os.path.join(path, index)
if os.path.exists(index):
path = index
break
【讨论】: