PHP 生成响应完成后修改 HTTP 状态代码

PHP 生成响应完成后修改 HTTP 状态代码

是否有人知道是否可以配置 apache 以在生成响应后修改其 HTTP 状态代码?

基本上,我有一个在多个主机名下运行的脚本,该脚本使用 302 状态代码将用户重定向到动态确定的位置,该状态代码由脚本本身生成(即设置“位置”标头的 PHP 脚本)。我想要做的是将其中一个主机名的状态代码从 302 更改为 301,同时保持其余主机名使用 302,并且我想在服务器配置级别执行此操作,以便无需修改脚本。

我查看了 apache 手册并找到了 mod_headers,但它似乎无法修改响应的状态代码,只能修改其后的标头。有人能告诉我是否有办法做到这一点吗,还是我只能选择修改脚本?

答案1

您可以使用 mod_rewrite 来实现这一点,例如以下示例:

RewriteCond %{HTTP_HOST} site2.com
RewriteCond %{REQUEST_URI} !^/site2.com
RewriteRule ^(.*)$ site2.com/$1 [R=301,L]

在您要重定向的主机名下放置 .htaccess 将使此操作有效。您还可以修改 vhost 配置。RewriteEngine On如果尚未设置,请不要忘记。

相关内容