将Vue项目部署到宝塔面板出现404错误的完整解决方案

 更新时间:2025年08月28日 09:44:43   作者:网友阿贵  
很多开发者在将Vue项目部署到宝塔面板时,经常会遇到访问页面时出现404错误的情况,这个问题尤其常见于使用了Vue Router history模式的项目中,本文将详细分析问题原因并提供多种解决方案,需要的朋友可以参考下

问题描述

很多开发者在将Vue项目部署到宝塔面板时,经常会遇到访问页面时出现404错误的情况。这个问题尤其常见于使用了Vue Router history模式的项目中。本文将详细分析问题原因并提供多种解决方案。

问题原因分析

1. 未正确配置Nginx/Apache

Vue项目(特别是使用Vue Router的history模式)需要服务器端进行特殊配置,否则直接访问路由路径时,服务器会尝试查找对应的物理文件,从而导致404错误。

2. 静态文件路径错误

打包后的Vue项目静态文件路径配置不正确,导致资源加载失败。

3. 未正确设置项目根目录

宝塔面板中网站根目录设置不正确,没有指向Vue项目的dist目录。

解决方案

方案一:Nginx服务器配置(推荐)

  1. 登录宝塔面板,找到对应的网站,点击"设置"
  2. 进入"配置文件"选项卡
  3. 在server块中添加以下配置:
location / {
    try_files $uri $uri/ /index.html;
}

完整配置示例:

server {
    listen 80;
    server_name yourdomain.com;
    root /www/wwwroot/your_project/dist;
    index index.html;
    
    location / {
        try_files $uri $uri/ /index.html;
    }
    
    # 其他配置...
}

方案二:Apache服务器配置

如果你使用的是Apache,需要进行如下配置:

  1. 在网站根目录下创建或编辑.htaccess文件
  2. 添加以下内容:
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

方案三:修改Vue Router为hash模式

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

const router = new VueRouter({
  mode: 'hash',
  routes
})

hash模式的URL会带有#符号,如http://example.com/#/about,但不需要服务器端额外配置。

详细步骤

步骤1:正确打包Vue项目

在项目目录下运行打包命令:

npm run build

确保生成的dist目录包含:

  • index.html
  • staticassets目录(包含JS/CSS等静态资源)

步骤2:上传到服务器

  1. dist目录下的所有文件上传到宝塔面板中网站的根目录(通常是/www/wwwroot/your_site
  2. 确保文件权限正确(通常设置为755)

步骤3:配置宝塔面板

  1. 登录宝塔面板
  2. 进入"网站"菜单
  3. 找到你的网站,点击"设置"
  4. 在"网站目录"中确保指向包含index.html的目录(通常是/www/wwwroot/your_site
  5. 根据前面介绍的方案配置Nginx或Apache

步骤4:检查静态资源路径

如果页面能打开但样式和JS加载失败,可能需要修改vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/'
    : '/'
}

常见问题排查

404错误只在刷新页面时出现

  • 这是典型的history模式路由问题,必须按照上述方案配置服务器

所有页面都显示空白

  • 检查静态资源路径是否正确
  • 查看浏览器控制台是否有资源加载错误

部分API请求404

  • 确保API代理配置正确(开发和生产环境可能需要不同配置)

最佳实践建议

  1. 使用Docker部署:考虑使用Docker容器化部署,可以避免环境差异问题
  2. 启用Gzip压缩:在宝塔面板中开启Gzip可以提高加载速度
  3. 配置HTTPS:使用宝塔面板的SSL功能为网站启用HTTPS
  4. 设置缓存策略:对静态资源配置适当的缓存头

总结

Vue项目在宝塔面板部署出现404错误通常是由于服务器未正确配置处理前端路由导致的。通过本文介绍的Nginx或Apache配置方法,可以完美解决这个问题。如果仍有疑问,建议查看Vue官方文档的部署部分或宝塔面板的官方论坛获取更多帮助。

以上就是将Vue项目部署到宝塔面板出现404错误的完整解决方案的详细内容,更多关于Vue部署到宝塔面板出现404的资料请关注脚本之家其它相关文章!

相关文章

  • Vue自定义复制指令 v-copy功能的实现

    Vue自定义复制指令 v-copy功能的实现

    这篇文章主要介绍了Vue自定义复制指令 v-copy,使用自定义指令创建一个点击复制文本功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • vue快捷键与基础指令详解

    vue快捷键与基础指令详解

    这篇文章主要介绍了vue快捷键与基础指令详解,需要的朋友可以参考下
    2017-06-06
  • Vue项目自动转换 px 为 rem的实现方法

    Vue项目自动转换 px 为 rem的实现方法

    这篇文章主要介绍了Vue项目自动转换 px 为 rem的实现方法,本文是通过一系列的配置后,转换成热门,具体内容详情大家跟随小编一起通过本文学习吧
    2018-10-10
  • Vue项目启动报错解决方法大全

    Vue项目启动报错解决方法大全

    这篇文章主要给大家介绍了关于Vue项目启动报错解决方法的相关资料,文中通过图文将解决的过程介绍的非常详细,对大家学习或者使用vue具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • vue.js如何更改默认端口号8080为指定端口的方法

    vue.js如何更改默认端口号8080为指定端口的方法

    本篇文章主要介绍了vue.js如何更改默认端口号8080为指定端口的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vue.js实现数据库的JSON数据输出渲染到html页面功能示例

    vue.js实现数据库的JSON数据输出渲染到html页面功能示例

    这篇文章主要介绍了vue.js实现数据库的JSON数据输出渲染到html页面功能,结合实例形式分析了vue.js针对本地json数据的读取、遍历输出相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • 详解vue-cli快速构建vue应用并实现webpack打包

    详解vue-cli快速构建vue应用并实现webpack打包

    这篇文章主要介绍了详解vue-cli快速构建vue应用并实现webpack打包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • vue3+element-plus Dialog对话框的使用与setup 写法的用法

    vue3+element-plus Dialog对话框的使用与setup 写法的用法

    这篇文章主要介绍了vue3+element-plus Dialog对话框的使用 与 setup 写法的使用,本文通过两种方式结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 解决Electron store的commit和dispatch不好用问题

    解决Electron store的commit和dispatch不好用问题

    这篇文章主要介绍了解决Electron store的commit和dispatch不好用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 使用Nuxt.js改造已有项目的方法

    使用Nuxt.js改造已有项目的方法

    这篇文章主要介绍了使用Nuxt.js改造已有项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论