Christian Eyrich: RewriteRule zur Ersetzung der Fileextension

Hallo,

bisher hatten meine Dokumente die Extension .html, jetzt habe ich sie auf .php umgestellt. D.h.
http://meinedomain.de/diedatei.html heißt jetzt
http://meinedomain.de/diedatei.php
Aufrufe der Seiten mit .html (z.B. aus einer Suchmaschine) sollen aber keine 404 bringen, sondern die jeweilige .php aufrufen.

Momentan habe ich das so gelöst:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^.*/tests/.*$ [NC]
RewriteRule ^(.+)html$ $1php [L]

Die .html Fileextensions aller Dateien, bis auf die im Unterverzeichnis tests, werden durch .php ersetzt.
Nur sieht der User/Browser weiterhin http://meinedomain.de/diedatei.html in der URL-Zeile und Webspider werden wohl auch nicht den neuen Namen mitbekommen.
D.h. der Server findet intern die diedatei.php und liefert sie aus, benachrichtigt den Client aber nicht darüber.

Deshalb dachte ich mir, die Rule durch das zu ersetzen:
RewriteRule ^.*%{HTTP_HOST}(.+)html$ $1php [R,L]

Was jetzt passiert ist mir unerklärlich. Es steht weitherhin http://meinedomain.de/diedatei.html in der URL-Zeile und der Browser zeigt nur den HTML-Teil der PHP-Datei. D.h. der Server interpretiert keinen beinhalteten PHP-Code und teilt auch dem Client nichts über den neuen Namen mit, obwohl es doch eine externe Umleitung ist.

Welche Rule ist eurer Meinung nach denn richtig?

Grüße,
Christian

  1. Hi,

    Nur sieht der User/Browser weiterhin http://meinedomain.de/diedatei.html in der URL-Zeile und Webspider werden wohl auch nicht den neuen Namen mitbekommen.
    D.h. der Server findet intern die diedatei.php und liefert sie aus, benachrichtigt den Client aber nicht darüber.

    ja, perfekt. Ist doch super, oder? Was willst Du mehr? Dadurch brauchst Du dem User auch nicht vorzulügen, er würde PHP-Code erhalten - alle Links können weiterhin auf .html lauten.

    Welche Rule ist eurer Meinung nach denn richtig?

    Ich denke, diese Frage habe ich beantwortet.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. ja, perfekt. Ist doch super, oder? Was willst Du mehr? Dadurch brauchst Du dem User auch nicht vorzulügen, er würde PHP-Code erhalten - alle Links können weiterhin auf .html lauten.

      Jein, da wohnen zwei Herzen in meiner Brust. Einerseits schön, niemand braucht sich neues zu merken.
      Andererseits sieht der User ja an sich einen nicht vorhandenen Filenamen. Und vor allem geht alles durch die Rules, die werden dadurch auch nicht einfacher.
      Meine Ausnahmen in der Praxis um einiges umfangreicher, weil viele Dateien halt wirklich auf .html enden.

      Aber vor allem nervt es mich gewaltig, nicht zu wissen, wie's richtig geht.

      Ciao,
      Christian