.htaccess 匹配参数化的 URL

.htaccess 匹配参数化的 URL

当浏览器请求以下 URL 时,我尝试设置缓存控制标头:

www.example.com/php/getData.php?exampleField=exampleValue

因为即使 getData.php 是一个动态页面,当参数exampleField等于时exampleValue响应也不会改变。因此,浏览器没有理由不缓存此结果。我的问题是如何FilesMatch在 .htaccess 文件中编写规则以匹配此规则,我尝试了以下方法,但没有成功:

<FilesMatch "php/getData.php\?exampleField=(exampleValue1|exampleValue2)$">
Header set Cache-Control "max-age=3024000, must-revalidate"
</FilesMatch>

答案1

GET 参数不是文件名的一部分,因此<FilesMatch>不会匹配它们。

假设您正在提供一个 PHP 文件,您是否考虑过简单地在那里添加缓存控制标头?

<?php
  /* ... */
  if (
    @isset( $_GET['exampleField'] ) &&
    $_GET['exampleField'] == 'exampleValue'
  ) {
    header('Cache-Control "max-age=3024000, must-revalidate"');
  }
  /* ... */
?>

相关内容