vue项目history模式 解决nginx页面刷新404问题

目录

首先了解vue项目的路由模式

1. 哈希模式(Hash Mode):

2. 历史模式(History Mode):

3. 抽象模式(Abstract Mode):

进入主题

解决方案


首先了解vue项目的路由模式

1. 哈希模式(Hash Mode):

在哈希模式下,路由路径会被设置为 URL 的哈希部分(即 # 后面的部分)。哈希模式不会将路由路径发送到服务器,因此在单页应用中非常适用。Vue 默认采用哈希模式。

2. 历史模式(History Mode):

历史模式使用浏览器的历史 API(`pushState` 和 `replaceState`)来实现路由导航。它会将路由路径直接显示在 URL 中,没有哈希部分。例如:`http://example.com/home`。由于历史模式会将路由发送到服务器,因此需要在服务器端进行配置,以确保在刷新页面或直接访问路由时,能够正确返回应用的入口页面。可以通过设置 `mode: 'history'` 来启用历史模式。

3. 抽象模式(Abstract Mode):

emmmm我也没用到过,暂不描述,想了解的话就查询相关资料吧~

进入主题

在nginx中部署history模式的vue项目后,页面刷新后即404,为什么嘞,原因跟简单,举个通俗易懂的例子

  • 一个目录下存放了很多个站点,每个站点也都存放在了不同的目录,那么我们想要访问某个站点,实际就是在访问某个目录下的网页。例如我有个域名 aaa.com 访问a1项目则为aaa.com/a1,访问a2项目则为aaa.com/a2,那么采用history,则可以理解为页面刷新后我访问了当前项目下某个目录下的站点,因为没有找到对应站点,所以就404了
  • 假设我在router下配置了home的路由,打开了/home的页面,页面刷新重新向服务器发起了请求,那么此home就非彼home了了了了了了

解决方案

在nginx下配置如下代码即可~

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
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 值,并根据这个值来渲染不同的页面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海的鲸同学 luvi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值