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

htaccess URL重写导致CSS/JS加载失败,如何添加资源访问例外规则?

问题根因

当前配置的重写条件(RewriteCond)仅会作用于紧随其后的第一条重写规则,仅单段路径的路由规则会判断请求是否对应真实存在的文件/目录,两段、三段路径的路由规则没有前置判断,因此assets/css/style.bundle.css这类三段路径的静态资源会被匹配为module=assets&view=css&id=style.bundle.css的路由请求,返回index.php内容而非静态资源。


修复方案

直接替换为以下.htaccess配置即可:

Options +Indexes
Options +FollowSymlinks
RewriteEngine On

# 优先跳过所有静态资源请求,直接返回真实文件
RewriteRule \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ - [L,NC]

# 单段路由:Module
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$  index.php?module=$1 [NC,L]

# 两段路由:Module/View
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=$1&view=$2 [NC,L]

# 三段路由:Module/View/Id
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?module=$1&view=$2&id=$3 [NC,L]

配置说明

  • 第一条静态资源跳过规则优先级最高,只要请求后缀属于常见静态资源格式,直接终止重写逻辑,不会进入后续路由匹配
  • 所有路由规则前都补充了真实文件/目录不存在的判断,确保只有非静态资源的请求才会走路由解析
  • 调整了Options配置的位置,符合Apache配置规范,避免规则加载顺序导致的失效问题

如有自定义后缀的静态资源,直接添加到第一条规则的后缀列表中即可。修改配置后重启Apache、清空浏览器缓存验证即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:45:03