Назад | Перейти на главную страницу

mod_headers не отправляет заголовки, когда файл является PHP

В моем файле .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.