Nginx服务器-路由切换后刷新后报404问题

问题描述

进入页面后刷新不会出现任何问题,当你从/路由跳转到/XXX路由,再刷新就会提示404。

问题原因

我们的服务器是根据页面路由,去按路径寻找资源的。我们打包好的web站点只有一个html页面,不存在其他资源目录下的html,服务器找不到对应页面所以才报404。

解决方案

我看网上有人用配置多个location对象,通过重定向回根目录的index.html解决这个问题。但是我觉得这个方案过于繁琐,不适用于比较大,页面比较多的项目。于是我找到了一个只需要加一行代码就可以解决的方案。

<!--只需要把这行代码加到我们的根目录的location配置项中就可以解决这个问题-->
    try_files $uri $uri/ /index.html;
    
  worker_processes  4;
  
events {  
    worker_connections  10240;
}  
  
http {  
    include       mime.types; 
    default_type  application/octet-stream;
  
    sendfile        on;

    keepalive_timeout  60; 
  
    gzip  on;

    underscores_in_headers on;

    proxy_buffering off;


	client_max_body_size 20M;
	client_body_buffer_size 128k;


    server {
        listen 80; 
        server_name 127.0.0.1; 
        root D:\\IdeaProjects\\datika\\build\\;  
        index index.html; 
		# 这行代码解决打包的页面路由到别的页面后刷新导致404的问题
		try_files $uri $uri/ /index.html;
    }  

}
    <!--完成这些后,你只需要保存退出vim编辑器并重新启动nginx就可以了。 -->

如果大家不想麻烦,也可以直接换hash路由解决问题。

本文转载 [https://juejin.cn/post/6844904186862125069],感谢!(https://juejin.cn/post/6844904186862125069)

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×