操纵 .htaccess-file 中 PHP 响应的 Headers?
Manipulate Headers of PHP response in .htaccess-file?
是否可以将 headers(在 .htaccess
文件中定义)添加到 PHP 生成的响应中?
我的文件中有以下 .htaccess
文件,它应该向我的 Apache Web 服务器传送的每个响应添加一个 Header TestHeader
:
#<IfModule mod_headers.c>
# Header unset X-Powered-By
Header add TestHeader "It works."
#</IfModule>
我在该文件夹中还有另外三个文件:
html.html
<html>content</html>
1.php
<?php
echo "<html>content php</html>";
2.php
<?php
header("TestHeader: Sent from PHP.");
echo "<html>content php</html>";
- 请求
html.html
return header TestHeader: "It works."
- 请求
1.php
不 return header TestHeader
- 请求
2.php
return header TestHeader: "Sent from PHP."
是否可以使用 .htaccess
指令以某种方式操纵来自 PHP 输出的响应 header?
编辑:PHP 在服务器上作为 FastCGI
运行。
您可以使用 SetEnvIf 然后相应地添加 header:
SetEnvIf Request_URI "\.php$" phpfile
Header set TestHeader "Sent from PHP" env=phpfile
如果请求 URL 以扩展名“.php”结尾,则 SetEnvIf 将设置一个变量 "phpfile"。如果变量 "phpfile" 仅存在,则 TestHeader: Sent from PHP
将作为响应 header 发送。
您可以根据需要将此逻辑用于任意数量的扩展或 URL 模式。
编辑:如果 header 已经存在,即它是从 PHP 发送的,那么使用 Header Set
apache 将用新值替换它。
这可能是您的 Apache 版本问题以及 PHP 作为 FastCGI 运行的事实。
在 Apache 2.2.X 中有一个错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=49308
我发现了一些建议使用 always
条件来解决问题的其他帖子:
Header always add TestHeader "It works."
另见:
- https://serverfault.com/questions/152373/mod-headers-not-working-for-php-mod-fastcgi-pages
- https://serverfault.com/questions/383011/mod-headers-not-sending-headers-when-file-is-php
- problems using mod_headers with php-fpm/mod_fastcgi
- 评论在:
是否可以将 headers(在 .htaccess
文件中定义)添加到 PHP 生成的响应中?
我的文件中有以下 .htaccess
文件,它应该向我的 Apache Web 服务器传送的每个响应添加一个 Header TestHeader
:
#<IfModule mod_headers.c>
# Header unset X-Powered-By
Header add TestHeader "It works."
#</IfModule>
我在该文件夹中还有另外三个文件:
html.html
<html>content</html>
1.php
<?php echo "<html>content php</html>";
2.php
<?php header("TestHeader: Sent from PHP."); echo "<html>content php</html>";
- 请求
html.html
return headerTestHeader: "It works."
- 请求
1.php
不 return headerTestHeader
- 请求
2.php
return headerTestHeader: "Sent from PHP."
- 请求
是否可以使用 .htaccess
指令以某种方式操纵来自 PHP 输出的响应 header?
编辑:PHP 在服务器上作为 FastCGI
运行。
您可以使用 SetEnvIf 然后相应地添加 header:
SetEnvIf Request_URI "\.php$" phpfile
Header set TestHeader "Sent from PHP" env=phpfile
如果请求 URL 以扩展名“.php”结尾,则 SetEnvIf 将设置一个变量 "phpfile"。如果变量 "phpfile" 仅存在,则 TestHeader: Sent from PHP
将作为响应 header 发送。
您可以根据需要将此逻辑用于任意数量的扩展或 URL 模式。
编辑:如果 header 已经存在,即它是从 PHP 发送的,那么使用 Header Set
apache 将用新值替换它。
这可能是您的 Apache 版本问题以及 PHP 作为 FastCGI 运行的事实。
在 Apache 2.2.X 中有一个错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=49308
我发现了一些建议使用 always
条件来解决问题的其他帖子:
Header always add TestHeader "It works."
另见:
- https://serverfault.com/questions/152373/mod-headers-not-working-for-php-mod-fastcgi-pages
- https://serverfault.com/questions/383011/mod-headers-not-sending-headers-when-file-is-php
- problems using mod_headers with php-fpm/mod_fastcgi
- 评论在: