vue项目部署到Apache服务器中遇到的问题解决


Posted in Javascript onAugust 24, 2018

最近刚重构完,我们的一个项目,由原来的jsp模式改为了前后端分离,前端选型为vue,开发完成之后第一件时间就是要部署测试,服务端选的是Apache。本来以为很简单的一件事情,几经坎坷部署了两天才算能够正常访问了。先记录如下,

过程搭建Apache环境,vue项目build之后把生成的dist文件放到,Apache下面,启动Apache之后本以为能够正常访问了,

前提说下:vue项目路由model:history ,默认不会出现下面的问题,因为个人感觉项目路径中带个#实在难受

但是发现错误如下:

vue项目部署到Apache服务器中遇到的问题解决

无法正常访问,报了一堆404,由于接触vue项目不久,一脸懵逼,于是百度了一下内容如下(vue项目部署到Apache404错误)发现有很多解决方案,最常见的就是增加.htaccess,自己也按照网上方式操作了一遍,反复更改无效,当然有可能是自己配置的方式不对,反正我的是没有解决。

于是换了一个思路重新搜索了一下,看到了另一篇文章:https://www.cnblogs.com/xyyt/p/7718867.html 茅塞稍微开了一点,我的正常配置如下:

vue项目部署到Apache服务器中遇到的问题解决

无非就是要把多的那一段路由信息去掉而已,尝试了如下变态的修改:

vue项目部署到Apache服务器中遇到的问题解决

试着重新build发布一下到Apache,奇迹的事情发生了,没问题了,一切正常,当然我的修改方式我也感觉不是很妥当,当实在找不到合适方式,只能暂时这样的修改,所有的路径都按照上面的修改,就能够正常访问了

vue项目部署到服务器页面空白的问题

  • 路由跳转的时候使用mode: 'history'去掉#号,放到服务器crm目录下,根据www.asa.com/crm路径访问,出现获取不到资源问题,页面一片空白,搜索问题,路由配置文件中添加mode: 'history', base: '/crm/',。
  • 然后资源都获取到了也都加载了但是页面还是空白,没有进行渲染(这个问题好像和问题1相同,当时没有记录下来现在回忆起来有点模糊),通过后端配置解决了问题。
  • 页面渲染成功各页面跳转页都正常了,但是又出现了在当前页面刷新都会出现404的问题,因为只有一个index.html文件,url中的路由跳转都是vue-router进行在实际文件中没有login.html等文件,服务器在找这些页面会找不到出现404错误,因此需要后端服务器配置进行404全部跳转到index.html解决问题。
  • 闲着没事有想到问题3,后端到底如何配置的,自己就实现了一遍,以mac下自带apache为例进行配置
    • 到mac下apache安装路径/private/etc/apache2/httpd.conf中, (apahce的配置文件)

开启rewrite_module功能,

LoadModule rewrite_module libexec/apache2/mod_rewrite.so,去掉前面的#;

DocumentRoot "/users/Dev/sites"(设置apache默认指向目录)
<Directory "/users/Dev/sites">
Options Indexes FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride All
Require all granted
</Directory>

设置AllowOverride All是为了使apache支持.hatccess文件。

* 在该项目根目录添加.hatccess文件(index.html平级),内容跟https://router.vuejs.org/zh-cn/essentials/history-mode.html‘>HTML5 History 模式(vue-router文档举例)类似,

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /crm/
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /crm/index.html [L]
</IfModule>

,需要修改的两个地方,RewriteBase /crm/;

RewriteRule . /crm/index.html [L],要添加项目所在文件的文件名,

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不同浏览器的怪癖小结
Jul 11 Javascript
JSON无限折叠菜单编写实例
Dec 16 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 Javascript
vue 设置 input 为不可以编辑的实现方法
Sep 19 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
Vue.js获取被选择的option的value和text值方法
Aug 24 #Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 #Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 #Javascript
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 #Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 #Javascript
微信小程序支付PHP代码
Aug 23 #Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 #Javascript
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP 替换模板变量实现步骤
2009/08/24 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
中学家长会邀请函
2014/01/17 职场文书
学党史心得体会
2014/09/05 职场文书
敬老院活动感想
2015/08/07 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
golang中的空slice案例
2021/04/27 Golang
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
小程序自定义轮播图圆点组件
2022/06/25 Javascript