Björn: .htaccess und dynamische Pfade

Guten Abend!

Ich benötige eine .htaccess die bei einem Seitenaufruf "seite.html" in Wirklichkeit "index.php?datei=seite.html" aufruft, also dynamisch die datei als Erweiterung zur index.php in den GET-String packt. Die RewriteRule wird hierzu bestimmt recht einfach sein, nur bin ich im Thema .htaccess nicht sonderlich fit.

Wer kann mit einer RewriteRule helfen und mir evtl auch eine Quelle zum nachlesen empfehlen?

Liebe Grüße
Björn

  1. Hi!

    Ich benötige eine .htaccess die bei einem Seitenaufruf "seite.html" in Wirklichkeit "index.php?datei=seite.html" aufruft, also dynamisch die datei als Erweiterung zur index.php in den GET-String packt. Die RewriteRule wird hierzu bestimmt recht einfach sein, nur bin ich im Thema .htaccess nicht sonderlich fit.

    Das hatten wir erst gestern: https://forum.selfhtml.org/?t=112170&m=708237.
    Die RewriteRule lässt sich für diesen Fall ebenfalls verwenden.

    Grüße,
    Fabian St.

    1. Das hatten wir erst gestern: https://forum.selfhtml.org/?t=112170&m=708237.
      Die RewriteRule lässt sich für diesen Fall ebenfalls verwenden.

      Danke, der Link hat geholfen! Trotzdem noch eine Frage:

      RewriteEngine On
      RewriteRule ^dateien/([a-zA-Z0-9]+).html$ index.php?datei=$1.html [L]

      Mit dieser RewriteRule (die auch bestens funktioniert) wird ja ein nicht existentes Verzeichnis "dateien" vorgegaukelt, in dem Html-Dateien lägen, in Wirklichkeit wird aber die index.php im root-Verzeichniss geöffnet und der Dateiname übergeben.
      Solange ich "dateien" weglasse, also

      RewriteEngine On
      RewriteRule ^([a-zA-Z0-9]+).html$ index.php?datei=$1.html [L]

      schreibe, wird die index.php richtig angezeigt. Wenn ich nun aber das Verzeichniss dateien vorgaukeln möchte, werden bilder und externe css nicht mehr dagestellt. Es scheint, als würde die index.php dann im Verzeichniss "dateien" liegen und von dort auf ausgerufen.

      Wie mache ich es richtig?

      Gruß
      Björn

      1. Hi!

        RewriteEngine On
        RewriteRule ^([a-zA-Z0-9]+).html$ index.php?datei=$1.html [L]

        schreibe, wird die index.php richtig angezeigt. Wenn ich nun aber das Verzeichniss dateien vorgaukeln möchte, werden bilder und externe css nicht mehr dagestellt. Es scheint, als würde die index.php dann im Verzeichniss "dateien" liegen und von dort auf ausgerufen.

        Wie mache ich es richtig?

        Offenbar stehen in den einzelnen Dateien relative Pfadangaben, die davon ausgehen, dass sich die jeweiligen Ressourcen im gleichen Verzeichnis wie die index.php befinden, was jedoch aufgrund der RewriteRule nicht mehr der Fall ist, da der Apache die aktuelle URL benutzt, um diese relativen Pfadangaben auf absolute abzubilden.

        Aus diesem Grund solltest du absolute Pfadangaben benutzen, d.h. statt

          
        <img src="img/bild.gif" />  
        
        

        solltest du

          
        <img src="/img/bild.gif" />  
        
        

        schreiben.

        Grüße,
        Fabian St.

        1. Aus diesem Grund solltest du absolute Pfadangaben benutzen.

          Die Datei liegt in "localhost/webseite/index.php", das Bild in "localhost/webseite/bilder/logo.gif"

          ich müsste also "/webseite/bilder/logo.gif" angeben.

          auf dem server ändert sich dieser pfad dann allerdings in /bilder/logo.gif, da "/webseite/" root-verzeichnis ist.

          Frage: um vor dem upload nicht alle verweise ändern zu müssen, ist es möglich, eine art base zu setzen, die als ausgangspunkt für absolute pfade dient, die ich dann nachher nur löschen brauche?

          gruß
          björn

          1. hi,

            Die Datei liegt in "localhost/webseite/index.php", das Bild in "localhost/webseite/bilder/logo.gif"

            ich müsste also "/webseite/bilder/logo.gif" angeben.

            auf dem server ändert sich dieser pfad dann allerdings in /bilder/logo.gif, da "/webseite/" root-verzeichnis ist.

            dann lege dir doch einen virtual host an, dessen web root webseite/ ist. dann kannst du sowohl auf dem test- als auch auf dem live-system auf /bilder/logo.gif verlinken.

            Frage: um vor dem upload nicht alle verweise ändern zu müssen, ist es möglich, eine art base zu setzen, die als ausgangspunkt für absolute pfade dient, die ich dann nachher nur löschen brauche?

            andersherum halte ich es für wesentlich sinnvoller: im test- und live-system für analoge ausgangsbedingungen sorgen, siehe oben.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }