Moin!
Im Verzeichnis der HTML-Datei des Artikels, den ich schreibe, liegt auch eine *.php-Datei. Über den Link "Anzeigebeispiel: So sieht's aus" ist sie verlinkt. Natürlich kann sie nicht ausgeführt werden. Sie enthält auch in Wirklichkeit nur das Ergebnis des Codes, dass die dazugehörige "echte" PHP-Datei erzeugen würde.
Nun bekomme ich aber auf dem Client das Downloadfesnter angezeigt. Wieso?
Im Nicht-HTTP-Kontext gibt es keinen HTTP-Header, welcher den Content-Typ angibt. Der Browser muß sich also anderweitig behelfen, und das bedeutet: Dateiendung zu Hilfe nehmen. Die lautet ".php" und ist mit Textpad verknüpft - das ist nichts, was ein Browser mit Glück in "das zeige ich mal als HTML an" umbiegen könnte.
Auf dem Server und online sieht das aber vollkommen anders aus! Da gibts einen HTTP-Header, und egal, ob die Datei nun ".html" oder ".php" heißt, sie wird mit einer dieser beiden Endungen als "text/html" ausgeliefert - einmal direkt, einmal durch den PHP-Interpreter.
Ich wäre jetzt nicht irritiert, wenn eine andere Fake-Datei (auch eine *.php) nicht wie erwartet angezeigt werden würde. Die beginnt allerdings auch mit einem gültigen Tag. (<br>)
Der IE sucht in Dateien, deren Content-Typ er nicht kennt, oder die "verdächtig" sind, den Inhalt nach Anhaltspunkten ab. Das Vorhandensein eines HTML-Tags ist offenbar ein Indiz, dass es sich um HTML handeln könnte, während die Abwesenheit sämtlicher HTML-Indikatoren zum "Download" führt.
Online wird sich deine Datei aber komplett anders verhalten, weil "text/html" ein bekannter und unverdächtiger Content-Typ ist.
- Sven Rautenberg