Hi!
AddHandler und SetHandler konfigurieren beide explizite Handler.
Der Originalposter hatte AddHandler verwendet, ich SetHandler, was also beides explizite/direkte Handlerzuweisungen sind.
Der Unterschied zwischen AddHandler und SetHandler ist meiner Meinung nach nicht das Problem, sondern dass bei einem derart gesetzten expliziten Handler alle mit ...Type gesetzten MIME-Types ignoriert werden. Sie sind ja auch nicht mehr nötig, wenn ein Handler anderweitig gefunden werden konnte. Durch einen solche MIME-Type-Konfiguration versprach sich suit, den Content-Type der Response zu beeinflussen. Jedoch wird mit dem MIME-Type (oder file type, wie es die Handler-Dokumentationsseite bezeichnet) in erster Linie Apache-intern der Weg zum impliziten Handler geebnet. Und auch ob dieser den Content-Type aus dem MIME-Type/file type ableitet oder was eigenes macht ist, war nicht mit Apache-Direktiven beeinflussbar.
Bei mir (Apache 2.2.12) funktioniert die Zuweisung eines Content-Type-Headers mittels Header set jedoch, beim Originalposter anscheinend aber nicht. Also kann das doch nicht am Unterschied zwischen expliziten/impliziten Handlern liegen, oder?
Und nun kommst du und warfst "Header set" ins Spiel. Ich bin momentan etwas irritiert, denn jetzt, bei einem erneuten Test, überschreibt es bei mir den Header. Leider weiß ich nicht mehr, was ich vorhin gemacht habe (ich sollte mir alle Versuche aufheben), denn da trat der Effekt ein, den ich schon die ganze Zeit beobachte, seit ich das Problem untersuche: Wenn ein Handler explizit konfiguriert war, hatte allein der das Sagen.
Es sieht also derzeit so aus, dass "Header set" doch die Macht hat, implizite und explizite Handler-Ergebnisse zu beeinflussen.
Abgesehen davon verstehe ich auch nicht, wieso die Zuweisung eines Handlers Auswirkungen auf die Header-Direktive haben sollte - letzten Endes weist man Apache doch einfach nur an, bei alles Dateien, die eine bestimmte Endung haben, einen bestimmten Header mitzuschicken. Solange dieser Header nicht von einer anderen Direktive ueberschrieben wird, muesste das doch immer klappen?
So ist der Plan. Und bis eben war uns™ offensichtlich keine solche überschreibende Direktive bekannt. Alle (außer den ominösen Filtern) befassten sich mit dem Weg zum Content Generator/Handler und nicht mit dem Ändern seines Ergebnisses.
P.S. Möglicherweise war es beim ersten Test ein 304-Not Modified, das mich Glauben machte, Header zeige keine Wirkung. Das lief mir nämlich gerade im livehttpheaders-Tab über den Weg, als ich mit
Header set Content-Type text/plain
in einer .htaccess unter anderem eine Bilddatei als Plaintext ausgeben wollte, die vorher schon ein Opfer eines anderen Tests wurde.
Lo!