.htaccess配置异常:根路径未跳转至/build/index.html的问题排查
根路径重定向问题修复方案
问题原因
服务器根目录存在默认的index.html文件,访问根路径/时,RewriteCond %{REQUEST_FILENAME} -f会匹配到这个文件,触发终止规则RewriteRule ^ - [L],导致后续跳转到/build/index.html的规则根本没机会执行。
修正后的.htaccess配置
RewriteEngine On RewriteBase / # 先处理/api路径,确保所有/api开头的请求直接指向/api目录 RewriteRule ^api/(.*)$ /api/$1 [L] # 优先处理根路径,直接转发到/build/index.html RewriteRule ^$ /build/index.html [L] # 真实存在的文件或目录直接访问,不做重写 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 转发静态资源到/build目录,保证React资源加载正常 RewriteRule ^(.+\.(js|css|svg|png))$ /build/$1 [L] # 其他所有路径都转发到/build/index.html,兼容React前端路由 RewriteRule . /build/index.html [L]
关键调整点
- 把根路径的重写规则移到真实文件/目录检查之前,避免被根目录的默认
index.html拦截 - 新增
/api路径的优先处理规则,确保接口请求不会被误转发到React应用 - 保留原有静态资源和SPA路由的规则,保证其他路径正常工作
内容的提问来源于stack exchange,提问作者handsome
相关产品推荐
相关产品推荐

