@@ -157,18 +157,25 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
157157 // 查找匹配的代理路径
158158 var matchedPrefix string
159159 var pathConfig config.PathConfig
160+
161+ // 首先尝试完全匹配路径段
160162 for prefix , cfg := range h .pathMap {
163+ // 检查是否是完整的路径段匹配
161164 if strings .HasPrefix (r .URL .Path , prefix ) {
162- matchedPrefix = prefix
163- pathConfig = cfg
164- break
165+ // 确保匹配的是完整的路径段
166+ restPath := r .URL .Path [len (prefix ):]
167+ if restPath == "" || restPath [0 ] == '/' {
168+ matchedPrefix = prefix
169+ pathConfig = cfg
170+ break
171+ }
165172 }
166173 }
167174
168- // 如果没有匹配的路径,返回 404
175+ // 如果没有找到完全匹配,返回404
169176 if matchedPrefix == "" {
177+ // 返回 404
170178 http .NotFound (w , r )
171- log .Printf ("[Proxy] %s %s -> 404 (%s) from %s" , r .Method , r .URL .Path , utils .GetClientIP (r ), utils .GetRequestSource (r ))
172179 return
173180 }
174181
@@ -179,7 +186,6 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
179186 decodedPath , err := url .QueryUnescape (targetPath )
180187 if err != nil {
181188 h .errorHandler (w , r , fmt .Errorf ("error decoding path: %v" , err ))
182- log .Printf ("[Proxy] ERR %s %s -> 500 (%s) decode error from %s" , r .Method , r .URL .Path , utils .GetClientIP (r ), utils .GetRequestSource (r ))
183189 return
184190 }
185191
@@ -198,15 +204,13 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
198204 parsedURL , err := url .Parse (targetURL )
199205 if err != nil {
200206 h .errorHandler (w , r , fmt .Errorf ("error parsing URL: %v" , err ))
201- log .Printf ("[Proxy] ERR %s %s -> 500 (%s) parse error from %s" , r .Method , r .URL .Path , utils .GetClientIP (r ), utils .GetRequestSource (r ))
202207 return
203208 }
204209
205210 // 创建新的请求时使用带超时的上下文
206211 proxyReq , err := http .NewRequestWithContext (ctx , r .Method , targetURL , r .Body )
207212 if err != nil {
208213 h .errorHandler (w , r , fmt .Errorf ("error creating request: %v" , err ))
209- log .Printf ("[Proxy] ERR %s %s -> 500 (%s) create request error from %s" , r .Method , r .URL .Path , utils .GetClientIP (r ), utils .GetRequestSource (r ))
210214 return
211215 }
212216
0 commit comments