vue项目,页面刷新就404了

在 Vue.js 项目中,如果使用了 vue-router 并且路由模式设置为 history 模式,那么在刷新页面或直接访问某个路由时,可能会遇到 404 错误。这是因为 history 模式下,前端路由的路径并不匹配服务器上的实际路径,导致服务器无法找到对应的资源。

解决方案

要解决这个问题,需要在服务器配置中将所有请求重定向到 index.html,让前端的 Vue.js 应用接管路由逻辑。

1. Nginx 配置

如果你使用 Nginx 作为服务器,可以按照以下方式配置:

nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;

    root /path/to/your/dist;  # 你的 Vue 项目打包后的静态文件路径
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}
  • try_files $uri $uri/ /index.html; :这个指令告诉 Nginx 先尝试请求的 URI,如果找不到,则返回 index.html,由前端路由处理。
2. Apache 配置

如果你使用 Apache 作为服务器,可以创建或修改 .htaccess 文件:

apache 复制代码
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  # 如果请求的文件存在,则直接提供该文件
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  # 如果文件不存在,则重定向到 index.html
  RewriteRule . /index.html [L]
</IfModule>
3. 使用 hash 模式

如果你不想更改服务器配置,可以考虑使用 Vue Router 的 hash 模式。这种模式会在 URL 中添加 #,例如 example.com/#/about。这种方式不会有刷新 404 的问题,因为 # 后的内容不会被发送到服务器。

router/index.js 中,将 mode 设置为 hash

javascript 复制代码
const router = new VueRouter({
  mode: 'hash',
  routes: [
    // 你的路由配置
  ]
});

总结

  • history 模式 :需要在服务器端配置,确保所有路由都重定向到 index.html
  • hash 模式 :更简单,不需要服务器端配置,但 URL 中会有 #

根据你的项目需求和服务器环境选择合适的解决方案。

相关推荐
CDN3607 分钟前
高防切换后网站打不开?DNS 解析与回源路径故障排查
前端·网络·数据库
信也科技布道师17 分钟前
把7个页面变成1段对话:AI如何重构借款流程
前端·人工智能·重构·架构·交互·用户体验
276695829233 分钟前
携程旅行 token1005
java·linux·前端·javascript·携程旅行·token1005·携程酒店
zopple36 分钟前
PHP与Vue.js:前后端开发的完美搭档
开发语言·vue.js·php
freewlt39 分钟前
Cursor与AI编程工具崛起:前端工程师的能力模型重构与职业生存策略
前端·重构·ai编程
墨雪遗痕1 小时前
工程架构认知(三):从传统Web系统到AI大模型驱动系统
前端·人工智能·架构
C澒1 小时前
AI 生码 - PRD2CODE:Schema2PRD 全流程设计与实现
前端·ai编程
掘金者阿豪1 小时前
微信图片已过期或已被清理,真的找不回了吗?完整自救指南
前端·后端
颜酱1 小时前
从 DeepSeek 文本对话到流式输出
前端·javascript·人工智能
Ulyanov1 小时前
打造现代化雷达电子对抗仿真界面 第二篇:雷达电子对抗仿真系统核心功能实现
前端·python·信息可视化·数据可视化·系统仿真·雷达电子战