gpt4 book ai didi

javascript - 启用 SSL 刷新 URL 时出现 React-router 问题

转载 作者:行者123 更新时间:2023-11-29 17:49:29 24 4
gpt4 key购买 nike

目前,我在使用带有 nginx 代理的 react-router 的 BrowserHistory 来转发请求时遇到问题。我已阅读以下答案:

React-router urls don't work when refreshing or writting manually

我正在寻找的解决方案似乎是一个包罗万象的解决方案,/* 将所有传入请求转发到 index.html

如果 URL 是一层深的,那么这工作正常,即。 /关于。但是,如果我在子路径 /some/other/url 上尝试刷新页面,页面将完全中断。

这是我当前的 nginx 配置(注意 http -> https 的永久重定向):

server {
listen 443 ssl;
server_name my.domain.io;
ssl_certificate /etc/letsencrypt/live/my.domain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;

root /usr/share/nginx/html;
index index.html index.htm;

location / {
#try_files $uri $uri/ /index.html;
try_files $uri $uri/ /index.html$is_args$args;
#try_files $uri /index.html;
#try_files $uri $uri/ /index.html?$args;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}

location ~ /.well-known {
allow all;
}
}

server {
listen 80;
server_name my.domain.io;
return 301 https://$host$request_uri;
}

location/ block 中,您会注意到一些其他的 try_files 语句,我试图让它们起作用,但无济于事。

react-router 逻辑如下所示:

<Route path="/user" component={ConnectedUserPage} />
<Route path="/user/preview/:locationId" component={ConnectedUserPage} />
<Route
path="/user/preview/:locationId/menu"
component={ConnectedUserPage}
fullMenuVisible={true}
/>
<Route
path="/user/preview/:locationId/menu/:sectionName/:someId"
component={ConnectedUserPage}
dishDetailsVisible={true}
/>

{/* Restaurant Profile */}
<Route
path="/location-profile/:profileId"
component={LocationProfile}
activeTabIndex={0}
/>
<Route
path="/location-profile/:profileId/gallery"
component={LocationProfile}
activeTabIndex={0}
/>
<Route
path="/location-profile/:profileId/gallery/:imageId"
component={LocationProfile}
activeTabIndex={0}
/>
<Route
path="/location-profile/:profileId/details"
component={LocationProfile}
activeTabIndex={1}
/>
<Route
path="/location-profile/:profileId/menu"
component={LocationProfile}
activeTabIndex={2}
/>
<Route
path="/location-profile/:profileId/comments"
component={LocationProfile}
activeTabIndex={3}
/>
<Route
path="/location-profile/:profileId/stuff"
component={LocationProfile}
activeTabIndex={4}
/>
<Route
path="/location-profile/:profileId/menu/:somethingName"
component={LocationProfile}
activeTabIndex={2}
/>
<Route
path="/location-profile/:profileId/menu/:somethingName/:someItemId"
component={LocationProfile}
activeTabIndex={2}
/>
.
.
.
.

如有任何帮助或指导,我们将不胜感激。

最佳答案

我遇到了与您类似的问题,我的团队花了很多时间研究 nginx 和 react-router,这与您的设置非常相似。

我也有以下错误:

Uncaught SyntaxError: Unexpected token < error

最后我找到了一个解决方案,实际上在我的 index.html 服务器文件中。

我为我的包使用了相对路径

<link href="styles.css" rel="stylesheet" />    
<script src="bundle.js"></script>

在路由之后,假设您尝试访问 your/path/subdomain,它会尝试在 your/path/subdomain 获取 bundle.js 和 styles.css 文件/styles.cssyour/path/subdomain/bundle.js,但它们是我项目的根。

所以我的解决方案就是使用

<link href="/styles.css" rel="stylesheet" />
<script src="/bundle.js"></script>

这解决了问题。希望对您有所帮助。

关于javascript - 启用 SSL 刷新 URL 时出现 React-router 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45439198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com