上一篇                     
               
			  将Vue项目部署到虚拟主机
- 虚拟主机
- 2025-07-24
- 4736
 构建项目生成静态文件,上传至虚拟主机webroot,配置服务器重写规则,确保路由
 
构建Vue项目
-  运行构建命令 
 在项目根目录执行:npm run build 生成的静态文件位于 dist目录下,包含index.html、css、js等文件。
-  优化静态文件 - 删除 dist/index.html中多余的<script>标签(如<script src="http://npm.taobao.org/...">),生产环境无需这些依赖。
- 检查 assets路径是否正确,确保资源文件能被正确加载。
 
- 删除 
上传文件至虚拟主机
-  使用FTP工具上传 - 通过FTP客户端(如FileZilla)连接虚拟主机,将 dist目录下的所有文件上传至虚拟主机的public_html(或根目录)。
- 确保 index.html在根目录,且文件权限正确(通常设置为644或755)。
 
- 通过FTP客户端(如FileZilla)连接虚拟主机,将 
-  通过控制面板上传 - 登录虚拟主机的cPanel或文件管理后台,进入 public_html目录,上传dist文件夹内的所有文件。
 
- 登录虚拟主机的cPanel或文件管理后台,进入 
配置服务器路由(解决刷新404问题)
若使用Vue Router的history模式,需配置服务器将所有请求重定向到index.html。 
-  创建 .htaccess文件
 在public_html目录下创建.htaccess文件,添加以下规则:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^.$ index.html [QSA,L] </IfModule> - 作用:将所有请求(包括嵌套路由)重定向到 index.html,由前端路由处理。
 
- 作用:将所有请求(包括嵌套路由)重定向到 
-  验证配置 
 访问域名时,输入深层路径(如https://yourdomain.com/about),应正常显示页面,无404错误。
处理后端API(如需后端服务)
-  代理配置(开发环境) %ignore_pre_3%
 开发时可通过vue.config.js配置代理:
-  生产环境API地址 - 修改代码中API的基础地址为公网IP或域名(如 axios.defaults.baseURL = 'https://api.yourdomain.com')。
- 确保API服务器允许虚拟主机的IP访问,且跨域配置正确(如CORS)。
 
- 修改代码中API的基础地址为公网IP或域名(如 
绑定域名与配置HTTPS
-  绑定域名 - 登录虚拟主机控制面板,进入“域名管理”或“附加域”,添加自己的域名并指向虚拟主机。
- 修改DNS解析,将域名的A记录指向虚拟主机的IP地址。
 
-  申请SSL证书 - 通过cPanel的“SSL/TLS”工具申请免费Let’s Encrypt证书,或手动上传已有证书。
- 强制HTTP跳转HTTPS:在 .htaccess中添加:RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
常见问题与解决方案
| 问题 | 解决方案 | 
|---|---|
| 刷新页面报404 | 确保 .htaccess规则正确,且服务器支持URL重写(mod_rewrite模块启用) | 
| 静态资源加载失败 | 检查 publicPath配置(vue.config.js中的publicPath),确保资源路径正确 | 
| API跨域请求失败 | 在API服务器配置CORS,或使用Nginx反向代理(需主机支持) | 
相关问题与解答
问题1:虚拟主机不支持.htaccess怎么办?
 
解答:
- 联系主机服务商确认是否支持URL重写规则。
- 如果支持,确保 .htaccess语法正确;如果不支持,需将项目改为Hash路由模式(mode: 'hash'),但URL会携带符号。
问题2:部署后页面提示“混合内容”错误(Mixed Content)?
解答:
- 确保所有静态资源(JS、CSS、图片)均通过HTTPS加载。
- 检查API请求是否为HTTP,若API未启用HTTPS,需调整为HTTPS或允许不安全请求(
 
  
			