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

如何在.htaccess中将URL重写至index.html但排除现有文件/文件夹?

解决Vue Router单页应用.htaccess重写排除现有文件/目录的问题

原规则会把所有请求都导向index.html,包括实际存在的静态资源(css、js文件、图片、favicon.ico等),导致这些资源无法正常加载。你可以通过添加文件/目录存在性判断来修改规则,只有当请求的路径不是现有文件或目录时,才重定向到index.html。

修改后的完整.htaccess规则如下:

RewriteEngine On
# 如果请求的不是存在的文件,跳过
RewriteCond %{REQUEST_FILENAME} !-f
# 如果请求的不是存在的目录,跳过
RewriteCond %{REQUEST_FILENAME} !-d
# 满足上面两个条件时,重定向到index.html
RewriteRule ^ index.html [L]

规则说明:

  • RewriteCond %{REQUEST_FILENAME} !-f:检查当前请求的路径是否不是一个已存在的文件,!表示否定,-f代表普通文件。
  • RewriteCond %{REQUEST_FILENAME} !-d:检查当前请求的路径是否不是一个已存在的目录,-d代表目录。
  • 只有当上面两个条件同时满足时,才会执行RewriteRule,将请求导向index.html——也就是让Vue Router处理前端路由。

这样配置后,浏览器请求css/xyz.css、favicon.ico、图片等实际存在的资源时,会直接返回对应的文件;只有访问Vue Router定义的路由(比如/About、/User/123这类不存在的物理路径)时,才会加载index.html并由前端路由处理。

如果后续需要额外排除特定路径(比如API接口前缀),可以添加新的RewriteCond,比如:

# 排除以/api开头的路径
RewriteCond %{REQUEST_URI} !^/api/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:42:38