之前一直遇到react项目部署服务器在nginx下直接访问某个路由就报404找不到错,这是因为nginx不理解单页应用,我还准备直接把react渲染成html,来解决这个问题,但这样绝对是非常麻烦。
而在今天终于找到了解决方案,只需要nginx的一个配置就可以解决
try_files $uri /index.html
这行代码是什么意思呢?
关键点1:按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理
关键点2:查找路径是按照给定的root或alias为根路径来查找的
关键点3:如果给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
关键点4:如果是格式2,如果最后一个参数是 = 404 ,若给出的file都没有匹配到,则最后返回404的响应码
完美的匹配了这种单页应用需求,我是在宝塔面板下建立站点,所以直接在宝塔站点下修改站点配置添加进去这行就可以了
server{
try_files $uri /index.html
}