我正在使用-在我的应用程序中切换路线-
<Route path="/myBootDomain" render={props => {
//check route path
const onpathA = window.location.href.indexOf('/pathA') !== -1;
const onpathB = window.location.href.indexOf('/pathB') !== -1;
if (onpathA){ return <PathAComponent />;}
else if(onpathB){ return <onpathBComponent />;}
}}/>
当我在localhost上运行该应用程序时,它可以按预期运行,因此我希望我的控制器将子域的映射到正确的路由,例如控制器-
@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/pathA")
public class WebContentController {
@RequestMapping(method = RequestMethod.GET)
public void method(HttpServletRequest request, HttpServletResponse httpServletResponse) {
httpServletResponse.setHeader("Location", "/myBootDomain/pathA");
httpServletResponse.setStatus(302);
}
}
当尝试访问http://localhost:8080/myBootDomain/pathA而不是重定向到索引文件时,我被重定向到同一控制器(无限循环)。
我的index.html在
/resources/static
下。感谢您的帮助。
最佳答案
您要做的是提供相同的index.html
文件,该文件包含脚本(React应用程序),但来自不同的路径,即:/myBootDomain/pathA
和/myBootDomain/pathA/foo/bar
。可以确保当用户重新加载URL时,他会得到相同的React应用,然后执行路由逻辑。请参阅@tashkhisi答案以获取更多上下文https://stackoverflow.com/a/62193394/906265
现在,它取决于服务器应用程序的设置方式以及要使“全部捕获”的路径,但是已经有一个类似的问题Spring catch all route for index.html