Отключить индексные файлы с SimpleHTTPServer

По умолчанию SimpleHTTPServer использует index.html как файл индекса, я хотел бы отключить их и всегда показывать индекс каталога.

Как я могу это сделать? Документ здесь ничего не говорит об этом

2 ответа

Решение

Я должен переписать send_head метод

Просто отключите следующие строки

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

Простой способ:

Переименуйте файл индекса во что-нибудь еще

Более сложный подход:

Вы должны переопределить метод translate_path SimpleHTTPRequestHandler примерно так:

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()
Другие вопросы по тегам