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

如何在.htaccess中为指定目录及子目录非PDF文件设置10小时过期头?

指定目录(排除PDF文件)设置10小时过期头的.htaccess实现方法

由于.htaccess文件本身就作用于其所在目录及所有子目录,因此不需要使用<Directory>指令,直接将配置文件放在目标/foldername目录下即可。以下是两种可行的实现方案:

方案一:使用mod_expires + FilesMatch(推荐)

通过FilesMatch匹配规则区分PDF与其他文件,精准设置过期策略:

<IfModule mod_expires.c>
    ExpiresActive On
    # 对所有非PDF文件设置10小时过期时间
    <FilesMatch "(?<!\.pdf)$">
        ExpiresDefault "access plus 10 hours"
    </FilesMatch>
    # 单独设置PDF文件的过期规则(示例为不缓存,可按需调整)
    <FilesMatch "\.pdf$">
        ExpiresDefault "access plus 0 seconds"
    </FilesMatch>
</IfModule>
  • 规则说明:(?<!\.pdf)$是负向后行断言,匹配所有不以.pdf结尾的文件;
  • 前提:服务器需启用mod_expires模块。

方案二:使用mod_rewrite + mod_headers

如果mod_expires模块无法启用,可通过重写规则设置Cache-Control头(与Expires头效果等效):

<IfModule mod_rewrite.c>
    RewriteEngine On
    # 匹配非PDF文件,设置环境变量传递缓存时长(36000秒=10小时)
    RewriteCond %{REQUEST_URI} !\.pdf$ [NC]
    RewriteRule ^ - [E=CACHE_DURATION:max-age=36000]
</IfModule>
<IfModule mod_headers.c>
    # 将环境变量中的缓存规则应用到响应头
    Header set Cache-Control "%{CACHE_DURATION}e" env=CACHE_DURATION
</IfModule>
  • 规则说明:[NC]表示忽略大小写匹配;
  • 前提:服务器需启用mod_rewrite和mod_headers模块。

注意事项

  • 可通过phpinfo()或服务器配置面板确认所需模块是否已启用;
  • 若需对特定类型文件(如图片、CSS)设置不同过期规则,可替换ExpiresDefault为ExpiresByType(如ExpiresByType image/jpeg "access plus 10 hours")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:45:34