我想更改子文件夹的缓存属性,但它似乎没有按预期工作。而不是缓存foo / images和foo / icons中的文件,而是返回no-cache set。
# enable caching for static files
<Directory ~ "^/web/foo/(images|icons)">
ExpiresActive On
# cache images and media for 7 days
ExpiresDefault A604800
Header append Cache-Control "public, proxy-revalidate"
</Directory>
<Directory ~ "^/web/(foo|bar)">
ExpiresActive On
ExpiresDefault A0
Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</Directory>
我基本上希望一切都不缓存,除非它们在某些子文件夹中。我的理解是,带有正则表达式匹配的目录将按列出的顺序匹配。
请记住,我的真实网站比这个虚假的例子复杂得多。所以,是的,我知道我可以将默认值设置为不缓存,然后按目录设置它,但我实际上无法在此配置上执行此操作,因此我希望仅使用Directory指令执行此操作,也不使用.htaccess文件。< / p>
答案 0 :(得分:1)
我认为您的问题是两个<Directory ~ "..">
设置都有效。这将使不太具体的一个(^/web/(foo|bar)
)覆盖您在images
和icons
目录中所做的更改。您可以尝试从父Directory
中排除这些目录。
<Directory ~ "^/web/(foo|bar)(?!(/icons|/images))">
ExpiresActive On
ExpiresDefault A0
Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</Directory>
希望它可以帮助你前进。