使用 SimpleHTTPServer 禁用索引文件

Posted

技术标签:

【中文标题】使用 SimpleHTTPServer 禁用索引文件【英文标题】:Disable index files with SimpleHTTPServer 【发布时间】:2017-04-06 00:17:47 【问题描述】:

默认情况下,SimpleHTTPServer 使用index.html 作为索引文件,我想禁用它们并始终显示目录索引。

我该怎么做? document here 对此只字未提

【问题讨论】:

【参考方案1】:

简单的方法:

将索引文件重命名为其他任何内容

更复杂的方法:

您必须使用以下内容覆盖 SimpleHTTPRequestHandlertranslate_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()

【讨论】:

【参考方案2】:

我应该覆盖send_head 方法

只需禁用以下几行

        for index in "index.html", "index.htm":
            index = os.path.join(path, index)
            if os.path.exists(index):
                path = index
                break

【讨论】:

以上是关于使用 SimpleHTTPServer 禁用索引文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 SimpleHTTPServer 进行单元测试

BaseHTTPServer和SimpleHTTPServer有什么区别?何时何地使用它们?

Python SimpleHTTPServer

我可以用 python 的 SimpleHTTPServer 设置一个标题吗?

使用 python -m SimpleHTTPServer 快速搭建http服务 测试真实访问IP地址

使用 python -m SimpleHTTPServer 快速搭建http服务 测试真实访问IP地址