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

Apache .htaccess实现CSS/JS缓存破击的规则适配求助

.htaccess缓存破击重写配置(兼容伪静态)

需求说明

  • 移除路径开头的foo*版本号:将/foo123/css/style.css重写为/css/style.css
  • 忽略文件名中的数字版本号:将/css/styles.123.css重写为/css/styles.css
  • 需兼容已有的伪静态规则,避免404错误

正确的重写配置

将以下规则按顺序写入.htaccess文件:

RewriteEngine On

# 处理路径开头的foo+版本号
RewriteRule ^foo\d+/(.*)$ /$1 [L]

# 处理文件名中的数字版本号
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L]

# 原有伪静态规则(保持不变)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

关键说明

  1. 规则顺序优先级:缓存破击规则必须放在伪静态规则之前。Apache按顺序匹配规则,[L]标记会终止后续匹配,若伪静态规则在前,会直接将带版本号的请求转发到index.php,导致缓存破击规则失效。
  2. 路径版本号处理:^foo\d+/(.*)$精准匹配以foo开头后跟任意数字的路径前缀,直接剥离前缀后重写,无需额外条件(重写后会自动检查目标文件是否存在,不存在则继续走伪静态)。
  3. 文件名版本号处理:RewriteCond %{REQUEST_FILENAME} !-f确保只有当带版本号的文件不存在时才执行重写(避免真实存在的同名文件被误处理),匹配文件名.数字.css/js格式,剥离中间的数字版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:40:08