vue采用history路由的服务器部署问题
发现部署问题
在部署的时候发现打开的页面是空白
之前部署原理
之前的页面都是作为静态文件形式打包上传到服务器上
http://www.xiedashuaige.cn/bolg2.0/#/home
就和这个页面一样,我其实上只有一个页面/bolg2.0
然后前端的路由切换都是根据后面的哈希值来变化
然后不同的哈希值指向的页面还是/bolg2.0页面
所以就放在静态目录都可以访问
部署问题解析
然后我用了history路由后打开的页面页面的时候发现服务器报404
http://www.xiedashuaige.cn/BolgAdmin/admin
首先我在服务器上对应的静态页面是/BolgAdmin页面
但是我前端路由的首页是/BolgAdmin/admin这个页面
但是服务器以为/BolgAdmin/admin是单独的一个页面资源
然后又找不到这个资源,所以就会报404
分析问题
然后我想了两种解决方法
- 一种就是在服务器上设置一个转发,把所有/BolgAdmin下面的子路由全部转发到/BolgAdmin页面下,但是对于服务器的我不太了解
- 通过node写一个后端就像http://www.xiedashuaige.cn:3000一样,然后访问http://www.xiedashuaige.cn:3000/BolgAdmin/admin的页面全部转发到http://www.xiedashuaige.cn:3000/BolgAdmin上面,这样就可以通过node来实现,比使用apache来改应该简单一些,我还在研究中。。
解决问题
正好在学koa就用koa搭建了一个服务器,代码如下
const fs = require('fs')
const Koa = require('koa')
const route = require('koa-route')
const path = require('path')
const static = require('koa-static')
const app = new Koa()
const main = ctx => {
ctx.response.type = 'html'
ctx.response.body = fs.createReadStream(path.join(__dirname, '/index.html'))
}
const toMain = ctx => {
ctx.response.redirect('/admin/')
}
const staticFile = static(path.join(__dirname, '/'))
app.use(staticFile)
app.use(route.get('/', toMain))
app.use(route.get('/admin/*', main))
app.listen(3001)
其实就是搭建了一个静态目录,然后把/目录重定向到/admin目录下,然后把/admin/*目录全部打开index文件
然后这样就可以打开vue history模式的单页面应用了
结语
其实吧最后还是有一个问题,是针对于我这个项目的。我这个项目使用了vue的代理跨域,然后后端是用go写的跑在另外一个端口,所以最后直接把打包后的文件让go来做相同的处理,其实主要是了解了一波history模式会出现的问题咯。
vue采用history路由的服务器部署问题的更多相关文章
- Vue.js项目在apache服务器部署后,刷新404的问题
原因是vue-router 使用了路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. const router = n ...
- nodejs服务器部署教程一
第一篇教程紧紧让你输出一个hello world 环境介绍 服务器环境:ubuntu(16.04)64位 本地环境:windows10 64位 连接工具:mobaxterm ubuntu安装和基本配置 ...
- 在nginx上部署vue项目(history模式);
在nginx上部署vue项目(history模式): vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载.但是如果我们不想has ...
- 在nginx上部署vue项目(history模式)--demo实列;
在很早之前,我写了一篇 关于 在nginx上部署vue项目(history模式) 但是讲的都是理论,所以今天做个demo来实战下.有必要让大家更好的理解,我发现搜索这类似的问题还是挺多的,因此在写一篇 ...
- vue cli3项目发布在apache www/vue目录下并配置history路由
注意:vue项目打包后默认是指向服务器的根路径(比如apache默认www目录是根路径,当然也可以修改),这种情况不需要做路径的配置,只需要做history配置,如果不是发布到根路径而是www/vue ...
- win10系统本地iis或nginx服务器部署vue.js项目
1.前端框架一般依赖node.js,我们首先要安装node.js.请参考: http://www.cnblogs.com/wuac/p/6381819.html to:安装好node.js后npm也安 ...
- hash和history路由的区别
在了解路由模式前,我们先看下 什么是单页面应用,vue-router 的实现原理是怎样的,这样更容易理解路由. SPA与前端路由 SPA(单页面应用,全程为:Single-page Web appl ...
- 告别 hash 路由,迎接 history 路由
博客地址:https://ainyi.com/69 三月来了,春天还会远吗.. 在这里,隆重宣布本博客告别 Vue 传统的 hash 路由,迎接好看而优雅的 history 路由~~ 映照官方说法 v ...
- vuejs如何在服务器部署
title: vuejs如何在服务器部署 date: 2017-10-31 20:41:03 tags: [vue] --- 上传到网站服务器 Vue 是一个 javascript 的前端框架,它是运 ...
随机推荐
- js世家委托详解
事件原理 通过div0.addElementListener来调用:用法:div0.addElementListener(事件类型,事件回调函数,是否捕获时执行){}.1.事件类型(type):必须是 ...
- golang之channel
Buffered Channels package main import "fmt" func main() { ch := make(chan int, 2) ch <- ...
- Java笔记(day13)
多线程: 进程:正在进行中的程序(直译) 线程:执行路径,就是进程中负责程序执行的控制单元(执行路径): 一个进程中可以多个路径,称为多线程 一个进程至少一个线程 每一个线程都有自己运行的内容,这个内 ...
- java读源码 之 map源码分析(HashMap)二
在上篇文章中,我已经向大家介绍了HashMap的一些基础结构,相信看过文章的同学们,应该对其有一个大致了了解了,这篇文章我们继续探究它的一些内部机制,包括构造函数,字段等等~ 字段分析: // 默 ...
- Python Tkinter 图形组件介绍
1. 窗口 Tkinter.Tk() # -*- coding: UTF-8 -*- import Tkinter myWindow = Tkinter.Tk() myWindow.title('南风 ...
- [ACdream 1212 New Year Bonus Grant]贪心
题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金.求总共最多可以产生多少的奖金流动 思路:每次选择没有下级并且有上级的员工a,令它的上级为b ...
- 重要的serialVersionUID
所有序列化的DO都需要加上 serialVersionUID 否则未来可能就有一个坑在等着你 当你需要修改序列化的实体累的时候 之前缓存内容反序列化就会失败,如果这个缓存很多个地方都在存取 使用 那么 ...
- PHP带标签的字符串去除标签,计算字符串长度的两种格式,截取字符串
$str = "<p>看地方撒地方<i>fdsafsdfsd</i><img src="/static/img/fdsf.jpg" ...
- Java注解的定义和使用
注解也叫元数据,一种代码级别的说明.是jdk1.5后产生的一个特性,与类.接口.枚举同一个档次,他可以在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明.注释: <!--m ...
- SpringMVC底层执行原理
一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) <?xml version="1.0" encodi ...