В моем файле .htaccess установлено следующее:
Header set MyHeader "I'm Set!"
Если я перейду в этот каталог (http://example.com/test/
), у которого нет индексного файла по умолчанию, и просматривая сетевую активность (в данном случае с Chrome), я вижу, что заголовок отправляется. Если я перейду к файлу php (http://example.com/test/test.php
), заголовок не отправляется.
Я создал index.html (просто <pre>Hi
как контент), и он будет отправлен. Я меняю имя файла на .php
, нет заголовка. Если я изменю оригинал test.php
к test.html
, он выводит код, который выглядит мусором, и отправляет заголовок. Если я изменю test.php
к test.png
, Я получаю значок сломанного изображения, и заголовок отправляется.
Таким образом, без тестирования, выходящего за рамки вышеупомянутого, с точки зрения MIME-типа и расширений файлов, появляется только .php
файлы (законные или другие) либо настроены так, чтобы не применять правила .htaccess, либо, в частности, директивы mod_headers. Но я не знаю, как это проверить, и поскольку это общий сервер, у меня нет httpd.conf
доступ, чтобы ковыряться.
Любые идеи относительно того, почему apache пропускает отправку заголовков для файлов php?
Я также пробовал:
<FilesMatch "\.(php)$">
Header set MyHeader "I'm Set!"
</FilesMatch>
Это ожидаемое поведение при запуске сценариев CGI. Из последней (2.4) версии документы mod_headers:
Значение по умолчанию onsuccess, возможно, потребуется изменить на всегда при обстоятельствах, подобных тем, которые перечислены ниже. Также обратите внимание, что повторение этой директивы с обоими условиями имеет смысл в некоторых сценариях, потому что всегда не является надмножеством onsuccess по отношению к существующим заголовкам:
[...]
Вы изменяете или удаляете заголовок, созданный сценарием CGI, и в этом случае сценарии CGI находятся в таблице, соответствующей всегда, а не в таблице по умолчанию.
Исходная проблема (возможно, с лучшим объяснением) находится в Ошибка 49308.