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

如何通过.htaccess为指定文件设置Cache-Control缓存控制头?

缓存规则不生效的核心原因
  • 服务器运行环境为Nginx:.htaccess是Apache服务器专属的分布式配置文件,Nginx默认不会读取解析.htaccess里的任何规则,你返回的响应头里server: nginx已经明确了当前运行环境,这是规则不生效的最主要原因。
  • .htaccess规则本身存在语法错误:<Files>指令的匹配对象只能是本地文件/文件名,不能填写完整的URL路径,就算在Apache环境下这条规则也无法匹配到目标style.css文件。
  • 存在上层代理缓存:响应头里的x-proxy-cache-info字段说明站点配置了前端代理缓存,就算后端服务设置了缓存头,也可能被代理层的缓存规则覆盖。
修正配置方案

方案1:修改Nginx配置(推荐,适配当前环境)

在Nginx站点配置文件中添加针对该CSS文件的缓存规则,示例配置如下:

location = /wp-content/themes/church-suite_child_theme/style.css {
    etag off;
    add_header Cache-Control "max-age=0, no-store, no-cache, must-revalidate";
    add_header Pragma "no-cache";
    add_header Expires "Thu, 30 June 2022 00:00:00 GMT";
}

添加后执行nginx -s reload重载配置即可生效。

方案2:若坚持使用Apache+.htaccess

先确认Nginx设置了将CSS文件请求转发到后端Apache处理,再修改.htaccess里的规则为正确写法:

<Files "style.css">
    FileEtag None
    <IfModule mod_headers.c>
        Header Unset ETag
        Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
        Header Set Pragma "no-cache"
        Header Set Expires "Thu, 30 June 2022 00:00:00 GMT"
    </IfModule>
</Files>

如果该目录下还有其他同名style.css需要更精准匹配,可以用<Directory>指令嵌套缩小匹配范围。

方案3:WordPress原生方案(无需修改服务器配置)

直接在子主题的functions.php中给CSS入队规则添加动态版本号,每次修改CSS文件后自动更换版本号触发缓存更新,示例代码:

function custom_child_theme_enqueue_styles() {
    // 自动取文件修改时间作为版本号
    $style_version = filemtime(get_stylesheet_directory() . '/style.css');
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array(), $style_version );
}
add_action( 'wp_enqueue_scripts', 'custom_child_theme_enqueue_styles' );

这个方案兼容性最高,不受服务器缓存规则影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:24:03