上一篇
将Vue项目部署到虚拟主机
- 虚拟主机
- 2025-07-24
- 6
构建项目生成静态文件,上传至虚拟主机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或允许不安全请求(