#!/usr/bin/env python3 import http.server import socketserver import os PORT = 3001 DIRECTORY = os.path.dirname(os.path.abspath(__file__)) class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def __init__(self, *args, **kwargs): super().__init__(*args, directory=DIRECTORY, **kwargs) def _handle_redirect(self): """处理需要重定向的路径""" # 定义需要重定向的路径映射 redirect_map = { '/login': '/login.html', '/login/': '/login.html', '/home': '/home.html', '/home/': '/home.html', '/settlement': '/settlement.html', '/settlement/': '/settlement.html', '/orders': '/orders.html', '/orders/': '/orders.html', '/member': '/member.html', '/member/': '/member.html', } # 检查是否需要重定向 if self.path in redirect_map: self.send_response(301) self.send_header('Location', redirect_map[self.path]) self.end_headers() return True # 根路径重定向到登录页 if self.path == '/' or self.path == '': self.send_response(301) self.send_header('Location', '/login.html') self.end_headers() return True return False def do_GET(self): if not self._handle_redirect(): super().do_GET() def do_HEAD(self): if not self._handle_redirect(): super().do_HEAD() if __name__ == "__main__": os.chdir(DIRECTORY) # 允许地址重用,解决端口占用问题 socketserver.TCPServer.allow_reuse_address = True with socketserver.TCPServer(("", PORT), MyHTTPRequestHandler) as httpd: print(f"服务器启动在端口 {PORT}") print(f"访问地址: http://localhost:{PORT}") print(f"目录: {DIRECTORY}") try: httpd.serve_forever() except KeyboardInterrupt: print("\n服务器已停止")