Mam plik .htaccess ustawiony na:
Header set MyHeader "I'm Set!"
Jeśli przejdę do tego katalogu ( http://example.com/test/
), który nie ma domyślnego pliku indeksu i przejrzę aktywność sieciową (w tym przypadku z Chrome), widzę, że nagłówek jest wysyłany. Jeśli przejdę do pliku php ( http://example.com/test/test.php
), nagłówek nie zostanie wysłany.
Utworzyłem index.html (z samą <pre>Hi
treścią) i jest on wysyłany. Zmieniam nazwę pliku na .php
, bez nagłówka. Jeśli zmienię orignal test.php
na test.html
, wyświetla kod śmieciowy i nagłówek jest wysyłany. Jeśli zmienię test.php
na test.png
, otrzymuję ikonę uszkodzonego obrazu i nagłówek zostanie wysłany.
Tak więc, bez testowania poza powyższym pod względem typu MIME i rozszerzeń plików, wydaje się, że tylko .php
pliki (legalne lub inne) są ustawione tak, aby nie miały zastosowania reguły .htaccess, a konkretnie dyrektywy mod_headers. Ale nie wiem, jak to przetestować, a ponieważ jest to serwer współdzielony, nie mam httpd.conf
dostępu do szukania.
Jakieś pomysły na to, dlaczego apache pomija wysyłanie nagłówków plików php?
Próbowałem też:
<FilesMatch "\.(php)$">
Header set MyHeader "I'm Set!"
</FilesMatch>
źródło
Odpowiedzi:
Jest to oczekiwane zachowanie podczas uruchamiania skryptów CGI. Z najnowszej (2.4) wersji dokumentacji mod_headers :
Pierwotny problem (z być może lepszym wyjaśnieniem) znajduje się w błędzie 49308 .
źródło
Header always set MyHeader "I'm Set!"
powinno rozwiązać problem. Myślę, że znalazłem odpowiedź, gdzie ktoś to zasugerował, i to nie zadziałało dla OP w tym przypadku. Ale jestem też całkiem pewien, że powiedzieli, by spróbowaćHeader set always
, i być może dlatego ta sugestia zawiodła.Header always set
. Czy po prostu źle czytam cytat?Header always set MyHeader "I'm Set!"
Według twojego przykładu powinno to być coś podobnego .