我正在使用-在我的应用程序中切换路线-

<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

09-13 00:39