vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。

如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

const router = new VueRouter({ mode: 'history', routes: [...] }) 

当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id,也好看!

不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id 就会返回 404,这就不好看了。

所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

后端配置例子

Apache

<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.html$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.html [L]
</IfModule>

除了 mod_rewrite,你也可以使用 FallbackResource

#nginx

location / {try_files $uri $uri/ /index.html;
}

警告

给个警告,因为这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面。

const router = new VueRouter({ mode: 'history', routes: [ { path: '*', component: NotFoundComponent } ] }) 

或者,如果你使用 Node.js 服务器,你可以用服务端路由匹配到来的 URL,并在没有匹配到路由的时候返回 404,以实现回退。更多详情请查阅 Vue 服务端渲染文档。

转载于:https://www.cnblogs.com/cap-rq/p/10148957.html

每天一点点之vue框架开发 - History 模式下线上路由报404错误相关推荐

  1. 每天一点点之vue框架开发 - 部署到线上

    1.在项目根目录下运行如下命令 npm run build 会生成一个dist目录, 2.然后将dist目录上传至服务器就可以访问页面了,不需要配置vue环境了. 转载于:https://www.cn ...

  2. 每天一点点之vue框架开发 - axios解决跨越问题

    每天一点点之vue框架开发 - axios解决跨越问题 参考文章: (1)每天一点点之vue框架开发 - axios解决跨越问题 (2)https://www.cnblogs.com/cap-rq/p ...

  3. php项目webpack打包,Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理

    这次给大家带来Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理,Vue项目webpack打包部署时Tomcat刷新报404错误问题处理的注意事项有哪些,下面就是实战案例,一起 ...

  4. Vue改用history模式后Nginx代理报404

    由于以前VUE采用hash模式: hash -- 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算) 比如:http://abc.example.com/abc/#/hello, ...

  5. 服务器进tp5项目报nginx404错误,TP5框架在nginx环境下路由报404错误解决方法 亲测可用...

    前段时间给客户写了个TP5框架的后台,主要是API调用,上传到客户服务器后发现首页可用,但所有内页报404错误,网上一搜发现天多一样的问题,但找了很多都是不可用的,而且都是过时的,但最终还是自己试出来 ...

  6. 每天一点点之vue框架开发 - vue组件之间传值(父向子传值)

    路由文件 {path: '/productListBase', name: 'productListLink', component: ProductListBase, redirect: '/pro ...

  7. 每天一点点之vue框架开发 - vue坑-input 的checked渲染问题

    选中radio或者checkbox需要注意的是: 不管<input type='radio checked='true''>  你的checked属性值是true或者false,他都会选中 ...

  8. vue框架开发出现页面空白、白屏的解决方法总汇

    vue框架开发出现页面空白.白屏的解决方法总汇 参考文章: (1)vue框架开发出现页面空白.白屏的解决方法总汇 (2)https://www.cnblogs.com/love314159/artic ...

  9. 基于 SpringBoot + Vue 框架开发的网页版聊天室项目

    ‍ ‍简介 微言聊天室是基于前后端分离,采用SpringBoot+Vue框架开发的网页版聊天室.使用了Spring Security安全框架进行密码的加密存储和登录登出等逻辑的处理,以WebSocke ...

最新文章

  1. 用户权限_SAP 用户权限
  2. openCV中的findHomography函数分析以及RANSAC算法的详解(源代码分析)
  3. java的语法结构_Java中的语法规范语法结构
  4. iOS Hacker 动态库 dylib 注入
  5. Yolo家族算法分析
  6. Vim 激荡 30 年发展史
  7. 阿里云银行关键业务破冰 邢台银行首家
  8. mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询
  9. rs485接口上下拉_带内部上下拉电阻的无极性rs-485接口芯片的制作方法
  10. 第55天:三战easy-dex
  11. VS2022编写C语言及背景美化
  12. 什么牌子的蓝牙耳机好?重低音分体式蓝牙耳机!
  13. dhcp服务器修改dns设置方法,dhcp服务器的dns设置方法
  14. 技术宅教你如何煎一个特别牛逼且装逼的牛排
  15. hdu2094 c语言
  16. sudo密码错误的解决办法
  17. pip 升级到最近21.0.1 后报错 sys.stderr.write(f“ERROR: {exc}“)
  18. Python函数参数之*与**用法详解
  19. Linux中buff和cache的解释与区别
  20. JDBC 增、查、删、改 和 防止sql注入登录

热门文章

  1. 一个RSS阅读器的源码,不敢独享!
  2. “最严版权令”披荆两年,正版化努力让中国音乐价值回归
  3. java base64编码的三种方式
  4. xx_学脱壳 -- 脱壳总结小思路
  5. playframework 打包在tomcat里部署
  6. 解决openfire在使用MySQL数据库后的中文乱码问题(转)
  7. centos安装飞信最新版
  8. sqlserver实验心得体会_SQLServer数据库实训总结
  9. Web前端——JavaScript(bom文档对象模型)
  10. 使用devops的团队_DevOps团队的3种指标仪表板