start_server.py 2.04 KB
#!/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服务器已停止")