当文件为 PHP 时,mod_headers 不发送标头

当文件为 PHP 时,mod_headers 不发送标头

我已将 .htaccess 文件设置为以下内容:

 Header set MyHeader "I'm Set!"

如果我进入该目录 ( http://example.com/test/)(该目录没有默认索引文件)并查看网络活动(在本例中使用 Chrome),我可以看到正在发送标头。如果我进入 php 文件 ( http://example.com/test/test.php),则不会发送标头。

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

因此,如果不对上述 mime 类型和文件扩展名进行测试,似乎只有.php文件(合法或非法)设置为不应用 .htaccess 规则或特别是 mod_headers 指令。但我不知道如何测试这一点,而且由于它是共享服务器,我无权进行httpd.conf探索。

关于为什么 apache 会跳过发送 php 文件的标头,您有什么想法吗?

我也尝试过:

 <FilesMatch "\.(php)$">
     Header set MyHeader "I'm Set!"
 </FilesMatch>

答案1

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

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

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

最初的问题(也许有更好的解释)在于错误 49308

相关内容