整个应用程序在 .htaccess 中设置了一个全局过期标头,我有一个 URL,例如 /current,我需要它就像一个不同的过期标头。
答案1
另一个解决方案是使用 Apache mod_setenvif 和 mod_headers 有条件地设置缓存头。
SetEnvIf Request_URI "^/current$" OVERRIDE_CACHE_HEADERS=TRUE
Header set Cache-Control no-cache env=OVERRIDE_CACHE_HEADERS
我还没有尝试过这个特定的配置,但我有一个类似的配置,它使用 RewriteRule 指令设置环境变量,然后使用 Header 有条件地更改 Cache-Control 指令
答案2
可以使用<Location>
apache 指令为特定 URL 定义不同的选项(例如过期)。
答案3
我假设:
- 您希望某个目录中的所有内容(而不仅仅是几个文件)的过期时间与网站的其他部分不同。例如:动态生成的 JS 文件;频繁更改的徽标和其他图像文件;或者经常编辑的 CSS,您希望这些 CSS 的缓存寿命非常短。
- Apache 直接提供该内容 - 它不是一个视图文件夹或 PHP 所包含的框架的某些东西。
- 您已启用 mod_expires 模块
如果已启用 .htaccess 文件,则会从文档根目录开始搜索该文件,直到找到要提供的文件为止。因此,最简单的方法是将一个新的 .htaccess 文件放在要更改过期限制的目录中。如果您的网站是 www.foo.com,并且您希望 /current 具有不同的过期标头,则在 www.foo.com/current 中创建一个简单的 .htaccess 文件。该文件只需要:
# enable expirations with mod_expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 2 weeks"
</IfModule>
话虽这么说... 在您的 httpd.conf 文件中为整个服务器、虚拟主机块或文档根目录的 .htaccess 中添加一个块将是更优雅和更易于管理的解决方案。