Stephan: Unterschied PHP und HTML Seiten (APACHE)

Hallo zusammen,

ich habe einige HTML-Seiten die per htaccess mit dem Befehl
AddType application/x-httpd-php .php .php4 .htm
durch den PHP Parser gejagt werden.

Das sieht zwar der normale User nicht, da er ja html Dateien in der Adresszeile seines Browsers sieht. Wenn man aber mit nem telnet drauf geht und sich die Seiten holt, sieht man den Unterschied:

HTML-Seite die durch den PHP-Parser kommt:
HTTP/1.1 200 OK
Date: Sun, 28 Mar 2004 15:55:58 GMT
Server: Apache/1.3.26 (Linux/SuSE) mod_ssl/2.8.10 OpenSSL/0.9.6g PHP/4.3.4
X-Powered-By: PHP/4.3.4
Transfer-Encoding: chunked
Content-Type: text/html

HTML-Seite ohne Parser:
HTTP/1.1 200 OK
Date: Sun, 28 Mar 2004 15:51:58 GMT
Server: Apache/1.3.26 (Linux/SuSE) mod_ssl/2.8.10 OpenSSL/0.9.6g PHP/4.3.4
Last-Modified: Tue, 09 Mar 2004 18:07:55 GMT
ETag: "3d8144-3112-404e07fb"
Accept-Ranges: bytes
Content-Length: 12562
Content-Type: text/html

Die Frage ist:
Kann man den Apache so einstellen (per htaccess) oder die Seite per PHP-Commandos so verbiegen (best. header übergeben, oder so) dass Sie der selbe Output kommt bei einer HTML-Seite und einer PHP Seite?

Für Hilfe wäre ich sehr dankbar!

Schönen Sonntag!
Stephan

  1. Hey Stephan,

    Kann man den Apache so einstellen (per htaccess) oder die Seite per PHP-Commandos so verbiegen (best. header übergeben, oder so) dass Sie der selbe Output kommt bei einer HTML-Seite und einer PHP Seite?

    Nein. Die einzige Zeile die du vertecken kannst ist "X-Powered-By: PHP/..."

    • dafür gibt es eine Einstellung in der php.ini

    Alle anderen header müssen zwangsläufig vorhanden sein, weil sich statische
    Dateien auf viele unterschiedliche Weise vom Server abrufen lassen (z.B.
    stückchenweise nach einer abgebrochenen Verbindung), und weil dynamische
    Inhalte nicht gecached werden sollten (kein ETag für PHP-Skripte).

    Einige der Header könntest du auch in PHP erzeugen oder simulieren, ist
    aber extrem aufwendig und zieht mitunter diverse Nebenwirkungen nach
    sich.

    Du könntest bestenfalls einen Proxy oder Cache zuschalten, aber ich denke
    das lohnt doch den Aufwand nicht?
    (Die schlechteste Möglichkeit wäre übrigens die statischen Dateien
    auszubremsen, indem du auch .png und .jpeg oder .css und .zip durch
    den PHP-Parser jagst.)

    MsF,
    milky

    1. Eigentlich sind es ja gar keine dynamischen Inhalte sondern tatsächlich html seiten.
      Das einzige Stück PHP das drin ist ist folgendes am anfang jeder seite:

      <?php
      if ( isset($_REQUEST["PHPSESSID"] ) {
        session_start();
      }
      ?>

      Das ist eigentlich nur dafür da dass die Session nicht verloren geht wenn jemand über die html-seiten browst...

      Also könnte der Client die Seite locker cachen und auch stückchenweise abholen wenn er will?

      Wie könnte man denn da ansetzen?

      Gruß
      Stephan

      1. Hallo!

        Eigentlich sind es ja gar keine dynamischen Inhalte sondern tatsächlich html seiten.
        Das einzige Stück PHP das drin ist ist folgendes am anfang jeder seite:

        <?php
        if ( isset($_REQUEST["PHPSESSID"] ) {
          session_start();
        }
        ?>

        Das ist eigentlich nur dafür da dass die Session nicht verloren geht wenn jemand über die html-seiten browst...

        Also könnte der Client die Seite locker cachen und auch stückchenweise abholen wenn er will?

        Also ich verstehe den Sinn der Aktion nicht wirklich. Wenn in allen Links "?PHPSESSID=123..." angehängt wird, oder ein passender Cookie, dann weiß doch jeder dass es dynamisch ist. Da können die header 1:1 gleich sein, was bringts?

        Und nein, Du kannst es  nicht wirklich sinnvol cachen weil PHP die HTML-Ausgabe für so ziemlichen jeden Client ändern könnte.

        Grüße
        Andreas