NGINX-刷新SPA应用程序中的子路由

问题描述 投票:0回答:1

我有一个用ReactJS编写的SPA应用程序。该应用程序具有显示列表卡的索引视图(/myapp)。按下卡,将通过路线(/myapp/item/myapp/itemXX)重定向到新页面。当用户从索引访问时,应用程序运行良好。但是,刷新/item中的浏览器会导致404 Not Found错误。

该服务器为NGINX,配置如下:

  # ...
  location /myapp {
    root /usr/share/nginx/html/;
        try_files $uri $uri/ /index.html;
        index index.html;
  }
  # ...

在日志文件中,我看到:

{
  "log": "2019/12/26 08:32:36 [error] 178#178: *3146 open() \"/etc/nginx/html/index.html\" failed (2: No such file or directory), client: 46.222.205.233, server: app.mydomain.com, request: \"GET /myapp/item/8?param=888 HTTP/2.0\", host: \"app.mydomain.com\"\n",
  "stream": "stderr",
  "time": "2019-12-26T08:32:36.253097755Z"
}

我已经尝试了多个位置规则,但没有成功(location ^~ /myapp,为内部路由location /myapp/item创建了特定规则。]

有帮助吗?谢谢!

reactjs nginx single-page-application
1个回答
0
投票

我发现了这个问题,它总结了路由在服务器端和客户端都是如何工作的:

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

对我有用的解决方案是:

location /myapp {
  if (!-e $request_filename){
    rewrite ^(.*)$ /myapp/index.html break;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.