当文件是 PHP 时 mod_headers 不发送标头

Ant*_*ony 9 php http-headers apache-2.2

我的 .htaccess 文件设置如下:

 Header set MyHeader "I'm Set!"
Run Code Online (Sandbox Code Playgroud)

如果我转到http://example.com/test/没有默认索引文件的目录 ( ) 并查看网络活动(在这种情况下使用 Chrome),我可以看到正在发送标头。如果我转到 php 文件 ( http://example.com/test/test.php),则不会发送标头。

我创建了一个 index.html(仅<pre>Hi作为内容)并被发送。我将文件名更改为.php,没有标题。如果我将原始文件更改test.phptest.html,它会输出看起来很垃圾的代码,并发送标头。如果我更改test.phptest.png,我会得到一个损坏的图像图标,并发送标题。

因此,如果没有在 mime 类型和文件扩展名方面进行上述测试,那么似乎只有.php文件(合法或其他)被设置为不适用 .htaccess 规则或特别是 mod_headers 指令。但我不知道如何对此进行测试,而且因为它是一个共享服务器,所以我无权httpd.conf四处闲逛。

关于为什么 apache 会跳过为 php 文件发送标头的任何想法?

我也试过:

 <FilesMatch "\.(php)$">
     Header set MyHeader "I'm Set!"
 </FilesMatch>
Run Code Online (Sandbox Code Playgroud)

And*_* M. 5

这是运行 CGI 脚本时的预期行为。来自mod_headers 文档的最新(2.4)版本:

在类似下面列出的情况下,onsuccess 的默认值可能需要更改为always。另请注意,在某些情况下,在这两个条件下重复此指令是有意义的,因为相对于现有标头,always 不是 onsuccess 的超集:

[...]
您正在修改或删除由 CGI 脚本生成的标头,在这种情况下,CGI 脚本位于始终对应的表中,而不是默认表中。

最初的问题(也许有更好的解释)位于Bug 49308中。