You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite构建React项目.htaccess路由重写后资源加载404问题

解决方案

针对你遇到的URL重写后资源加载404问题,这里有三个可行的解决思路,兼顾路由映射和资源路径解析:

1. 配置Vite的base绝对路径(推荐)

在项目根目录的vite.config.js中,设置base为你的部署子目录绝对路径(比如你的项目部署在/project/下):

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  base: '/project/' // 核心配置,指定资源加载的基准路径
})

重新构建项目后,Vite生成的资源路径会变成绝对路径(比如/project/assets/index-CVjGBOj5.css),不管当前URL是/project/edit/xxx还是直接访问/project/index.html,资源都会从正确的位置加载。

2. 在.htaccess中添加资源路径重写规则

不需要修改项目代码,直接在现有.htaccess规则前添加资源重写规则,把/edit/assets/开头的请求转发到实际的/assets/目录:

# 优先处理资源请求,避免路由规则拦截
RewriteRule ^edit/assets/(.*)$ assets/$1 [L]

# 原有的页面路由重写规则
RewriteRule ^edit/([0-9a-f]+)$ index.html?content=editor&shid=$1 [L,QSA]

这样当浏览器请求/project/edit/assets/xxx.js时,服务器会自动转发到/project/assets/xxx.js,从正确的位置读取资源文件。如果还有其他类似的路由前缀(比如/view/xxx),只需要复制第一条规则替换前缀即可。

3. 在HTML中添加<base>标签

在项目index.html的<head>标签内添加<base>,指定所有相对路径的基准URL:

<head>
  <!-- 其他meta、title等 -->
  <base href="/project/">
</head>

这个标签会让页面中所有相对路径(比如./assets/xxx.js)都以/project/为基准解析,最终变成/project/assets/xxx.js,解决路径解析错误的问题。但要注意如果项目部署路径变更,需要手动修改这个标签的值。


内容的提问来源于stack exchange,提问作者KT_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:47