繁体   English   中英

在.htaccess文件中操纵PHP响应的标头?

[英]Manipulate Headers of PHP response in .htaccess-file?

是否可以将标头(在.htaccess文件中定义)添加到PHP生成的响应中?

我有以下.htaccess文件,该文件应向我的Apache Web服务器传递的每个响应中添加标头TestHeader

#<IfModule mod_headers.c>
#  Header unset X-Powered-By
  Header add TestHeader "It works."
#</IfModule>

我在该文件夹中还有三个其他文件:

  1. html.html

     <html>content</html> 
  2. 1.php

     <?php echo "<html>content php</html>"; 
  3. 2.php

     <?php header("TestHeader: Sent from PHP."); echo "<html>content php</html>"; 
    • 请求html.html返回标头TestHeader: "It works."
    • 请求1.php 返回头TestHeader
    • 请求2.php将返回标头TestHeader: "Sent from PHP."

是否可以使用.htaccess指令从PHP输出操作响应标头?

编辑:PHP在服务器上作为FastCGI运行。

您可以使用SetEnvIf,然后相应地添加标题:

SetEnvIf Request_URI "\.php$" phpfile
Header set TestHeader "Sent from PHP" env=phpfile

如果请求URL以扩展名“ .php”结尾,则SetEnvIf将设置变量“ phpfile”。 如果仅存在变量“ phpfile”,则将TestHeader: Sent from PHP作为响应头发送。 您可以根据需要将这种逻辑用于任意数量的扩展名或URL模式。

编辑:如果标题已经存在,即它是从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."

另请参阅:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM