Я пытаюсь создать регулярное выражение для моего метода контроллера Spring, которое соответствует всем путям в моем веб-приложении, за исключением того, что ему также необходимо исключить трафик с префиксом «/ websock» , который приходитдля моего сервера веб-сокетов.Вот метод:
@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".Но вместо этого ему не удалось сопоставить что-либо, включая URL-адреса «abc», указанные выше:
"/{path:[^\\.]*}", "/**/{path:^(?!websock).*}/{path:[^\\.]*}".
Что я делаю не так с моим reg-ex?