我正在尝试为我的Spring控制器方法创建一个正则表达式,以匹配我的Web应用程序中的所有路径,除了它还需要排除前缀为“ / websock” 的任何流量,用于我的websocket服务器。方法如下:
@GetMapping(value = "/{path:[^\\.]*}")
public String redirect(@PathVariable(value="path") String path) {
LOGGER.debug("In redirect path:" + path);
return "forward:/";
}
我在网上尝试了很多示例,但找不到能满足我需要的示例。我的示例要么接受了所有流量(包括websocket前缀),要么排除了一些http流量。
第一个正则表达式是
"/{path:[^\\.]*}"
匹配URL,例如“ http://localhost:8080/abc”。但是,它没有匹配http://localhost:8080/abc/def。
我第二次尝试使用
"/**/{path:[^\\.]*}"
更正了该问题,但随后匹配了包括我的网络套接字流量在内的所有内容。
我尝试了以下操作,我从其他问题中发现以下内容应该排除以“ / websock”开头的流量。但是相反,它无法匹配包括上述“ abc” URL在内的所有内容:
"/{path:[^\\.]*}", "/**/{path:^(?!websock).*}/{path:[^\\.]*}".
我的reg-ex在做什么?