it编程 > 前端脚本 > Vue.js

一文解决Nginx部署Vue项目刷新页面404问题

17人参与 2025-10-13 Vue.js

问题描述

当使用nginx部署vue项目(或其他前端spa应用)时,直接访问首页可以正常显示,但刷新非首页路由或直接访问子路由时,会出现404错误。

问题原因

这是因为vue作为单页应用(spa),其路由是由前端javascript控制的。当你在浏览器中直接访问一个子路由(如/about)时:

解决方案

方案一:修改nginx配置(推荐)

在nginx配置中添加try_files指令,将所有请求重定向到index.html

server {
    listen       80;
    server_name  yourdomain.com;
    root         /path/to/your/vue/dist;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

或者更完整的配置示例:

server {
    listen       80;
    server_name  yourdomain.com;
    root         /path/to/your/vue/dist;
    index        index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    # 静态资源缓存配置
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

    # 防止直接访问index.html
    location = /index.html {
        internal;
    }
}

方案二:使用vue router的history模式

确保你的vue router配置为history模式:

const router = new vuerouter({
  mode: 'history',
  routes: [...]
})

方案三:使用hash模式(不推荐)

如果你不想修改服务器配置,可以将路由模式改为hash模式:

const router = new vuerouter({
  mode: 'hash',
  routes: [...]
})

这样url会变成类似http://example.com/#/about的形式,刷新不会出现问题,但url不够美观。

配置说明

try_files $uri $uri/ /index.html:nginx会依次尝试查找:

验证配置

修改配置后,执行以下命令验证并重载nginx:

sudo nginx -t  # 测试配置是否正确
sudo nginx -s reload  # 重载配置

其他注意事项

通过以上配置,你的vue项目应该可以在nginx上正常运行,并且刷新页面也不会出现404错误了。

到此这篇关于一文解决nginx部署vue项目刷新页面404问题的文章就介绍到这了,更多相关nginx部署vue刷新页面404内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

nginx部署前端vue项目完整详细指南

09-22

tomcat部署多个端口以及制定路径部署vue3方式

07-31

Nginx使用命令安装过程及说明

07-27

nginx部署vue前端打包项目方式

07-27

Vue中对象赋值问题:对象引用被保留仅部分属性被覆盖的解决方案

07-06

使用vscode搭建pywebview集成vue项目实践

06-04

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论