vue项目打包后,页面一片空白,刷新时404,路由history模式,问题解决!

Vue项目使用history模式打包后,页面出现白屏且刷新报404错误。问题源于未与后端配合设置路由规则。解决方法是让后端配置伪静态,调整服务器路由规则,以支持前端的history模式路由。
摘要由CSDN通过智能技术生成

问题描述:

Vue打包后运行白屏,刷新时404:

一开始为了美观将url上的#号,也就是路由的hash模式替换成了H5的history模式,这就特么出现了一个坑,打包后放到服务器,运行代码,好嘛组件出不来,刷新时候直接报了404,这就很尴尬了,赶紧排查原因


原因分析:

分析:
瞅了下万能的度娘,发现问题是"我自己手贱",没有后端配合的情况下就手贱打开路由history模式的时候,直接打了个包,就导致了白屏和刷新时候404,但这个也好解决,就把history模式换回hash模式就ok,但是问题是我就是不想换啊,不想换就得和后端配合一手。


解决方案:

解决方案:

去网上看了很多解决方案,都是特别的多还极其复杂,我集百家之长,终于得出了一个结论,让后台大哥去配置一个伪静态,后端叫法(伪静态),对于前台叫法应该叫路由规则,代码如下:

//全部
Vue 路由history 模式下,刷新页面会导致 404 错误的出现,这是因为浏览器会向服务器发送请求,但服务器并没有对应的路由,因此就会返回 404 错误。解决这个问题的方法有两种: 1. 配置后端服务器 如果你的 Vue 项目部署在 Apache 或 Nginx 等 Web 服务器上,你可以配置服务器来处理这个问题。具体做法是,在服务器上配置一个重定向规则,将所有的 URL 请求都重定向到 index.html 文件上。以 Apache 服务器为例,可以在 Apache 的配置文件(如 httpd.conf)中添加以下规则: ``` <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule> ``` 这个配置将所有的 URL 请求都重定向到 index.html 文件上,这样即使刷新页面,服务器也会返回正确的内容。 2. 使用 hash 模式 如果你不想在服务器上配置重定向规则,你可以考虑使用 hash 模式。在 hash 模式下,Vue 会使用 URL 中的 # 符号来表示路由,这样即使刷新页面,浏览器也只会重新加载 index.html 文件,而不会向服务器发送请求。要启用 hash 模式,只需要在 Vue 路由的配置中添加以下代码: ``` const router = new VueRouter({ mode: 'hash', routes: [...] }) ``` 这样就可以启用 hash 模式了。需要注意的是,hash 模式下,URL 中的 # 符号后面的内容不会被发送到服务器,因此你需要在前端代码中使用 JavaScript 来解析 URL 中的 hash 值,并根据这个值来渲染不同的页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值