为特定响应状态代码设置 Apache 响应标头

为特定响应状态代码设置 Apache 响应标头

当我的 PHP 应用程序返回 301 状态代码时,我想自动向响应添加一些标头以防止缓存重定向。

Header set "Expires" "Tue, 03 Jul 2001 06:00:00 GMT"
Header set "Cache-Control" "no-store, no-cache, must-revalidate, max-age=0"
Header set "Pragma" "no-cache"

虽然我通常会在应用程序级别添加此内容,但由于此应用程序的构建方式,这不是一个快速修复。作为权宜之计,如果可能的话,我想配置 Apache 以添加这些标头。

如何根据响应状态代码有条件地添加这些标题?

可能相关: 根据 apache 的代理响应代码添加标头

答案1

我认为使用 apache 是不可能的(问题在于条件),但我有一个想法,如何在应用程序级别解决它,但不改变实际的应用程序。

不确定你是否能做到,但它应该有效 - 无论如何,我只是想帮忙:-)

我将在某处创建一个 PHP 脚本,定义修复标头的函数并将其注册为关闭功能PHP 的:

<?php
  function fix_headers_on_shutdown() {
    $headers = headers_list();
    if(/* TODO: is redirect condition */) {
      header('Expires: Tue, 03 Jul 2001 06:00:00 GMT');
      header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
      header('Pragma: no-cache');
    }
  }
  register_shutdown_function('fix_headers_on_shutdown');
?>

然后让 PHP 在每个 PHP 脚本的开头包含此脚本自动添加文件配置选项。

相关内容