react-router v4 跳转外部url
react-router代码如下,/login对应的Login是单独的登录组件,/wxbusiness对应的Wxbusiness是主要的业务逻辑组件,所有不匹配这些组件都会请求NotFound这个组件,即404组件。
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/login" component={Login} />
<AuthRouter path="/wxbusiness" component={Wxbusiness} />
<Route
exact
path="/"
render={() => <Redirect to="/wxbusiness/index" replace />}
/>
<Route component={NotFound} />
</Switch>
</BrowserRouter>
);
}
部署方式:react通过webpack编译后部署到nginx上,nginx的/目录指向react编译后的目录(/app/wxbusiness/html)。
其中/doc对应的目录是gitbook的目录,即存放文档之类的,与react项目无关。
如下是nginx的部分配置(尝试过多种rewrite匹配模式,问题依旧)。
location / {
root /app/wxbusiness/html;
index index.html;
try_files $uri /index.html;
}
location /doc {
alias /app/wxbusiness/doc/_book;
try_files $uri /doc;
}
问题:这里先假设,域名是https://www.test.com,react项目的wxbusiness组件下写了一个a链接(详见如下代码),当用户点击该链接的时候跳转到https://www.test.com/doc,但是现在返回404。
自己尝试分析了一下,自认为是当点击a链接跳转的时候没有请求到nginx,而是路由在react-router内部消化了,因为没有匹配到/login和/wxbusiness(Route部分尝试加了一下/doc的路由,不提示404了,但是页面是空白的),所以404了
请问这个问题如何解决呢?先谢过了
const docurl = 'https://' + window.location.hostname + '/doc';
window.location.href = docurl;
return;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论