.htaccess 在缓存控制中的优先级

.htaccess 在缓存控制中的优先级

我的文档根目录中有一个 .htaccess,内容如下:

    ExpiresActive On
    ExpiresDefault A0
    <FilesMatch "\\.(gif|jpe?g|png)$">
        ExpiresDefault A86400
    </FilesMatch>

但是,对于特定的子目录 /images/avatar,我只希望其期限为 300 秒。因此,我在 /images/avatar 下创建了另一个 .htaccess,内容如下:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A300
</IfModule>

使用上述设置,我无法强制 /images/avatar 下的文件的过期时间为 300 秒。但是,如果我删除根目录中的 .htaccess,则将隐含 300 秒规则。

有啥帮助吗?谢谢

答案1

我怀疑问题在于在 Directory 选项之后应用了 FilesMatch 选项。尝试在头像目录中指定 FilesMatch 指令,如下所示:

<FilesMatch ".">
    ExpiresActive On
    ExpiresDefault A300
</FilesMatch>

http://httpd.apache.org/docs/2.0/sections.html这解释了目录选项首先应用,然后应用 FilesMatch 选项。 在您的例子中,您将目录选项的 ExpiresDefault 设置为 A300,然后父 FilesMatch 选项应用于子目录中的任何匹配文件(请记住,设置目录的选项会影响所有子目录)。

相关内容