Tomas: Arbeiten mit PATH_INFO aber ohne index-Datei

Hallo,

Wie man auf Wikipedia sehen kann, reicht dort die Pfadangabe um zu einem Artikel zu gelangen. Ich weiß, das es mit Hilfe von PHPs $_SERVER['PATH_INFO'] realisiert wird.
Unklar bleibt mir jedoch, wie sie es geschafft haben, dies ohne eine index.php zu realisieren, da ich gehört habe, dass kein Mod_Rewrite verwendet wird.

Wie bekomme ich es also hin, selbst nur mit Pfadangaben zum Ziel zu kommen?

Statt:
www.example.com/index.php/Startseite/
Etwa:
www.example.com/firmaXy/Startseite/

gruß, Tomas

  1. Kann sein das ich total daneben liege, aber vielleicht indem "index.php" das Standartdokument ist?

    1. Hallo,

      Kann sein das ich total daneben liege, aber vielleicht indem "index.php" das Standartdokument ist?

      Ich weiß nicht was du unter Standarddokument verstehst.

      index.php ist in der Apache Konfigurationsdatei unter DirectoryIndex eingetragen.

      gruß, Tomas

  2. Hallo Tomas,

    Wie man auf Wikipedia sehen kann, reicht dort die Pfadangabe um zu einem Artikel zu gelangen. Ich weiß, das es mit Hilfe von PHPs $_SERVER['PATH_INFO'] realisiert wird.
    Unklar bleibt mir jedoch, wie sie es geschafft haben, dies ohne eine index.php zu realisieren, da ich gehört habe, dass kein Mod_Rewrite verwendet wird.

    das kannst du unter http://meta.wikimedia.org/wiki/Rewrite_rules nachlesen.

    Gruß Gunther

    1. Hallo Gunther,

      das kannst du unter http://meta.wikimedia.org/wiki/Rewrite_rules nachlesen.

      Danke!

  3. echo $begrüßung;

    Wie man auf Wikipedia sehen kann, reicht dort die Pfadangabe um zu einem Artikel zu gelangen. Ich weiß, das es mit Hilfe von PHPs $_SERVER['PATH_INFO'] realisiert wird.
    Unklar bleibt mir jedoch, wie sie es geschafft haben, dies ohne eine index.php zu realisieren, da ich gehört habe, dass kein Mod_Rewrite verwendet wird.

    Was in den Wikipedia-URLs auffällt, ist der immer gleiche Teil "wiki". Dieser wäre im Prinzip nicht nötig. Meine Vermutung ist, dass dieser jedoch technisch nötig ist, um einen Alias greifen zu lassen.

    Kleiner Test:

    Alias /phpinfo /pfad/zum/document_root/phpinfo.php

    Ein Aufruf von example.com/phpinfo zeigt die PHP-Informationsseite an.
    example.com/phpinfo/pathinfo zeigt sie auch an, und $_SERVER['PATH_INFO'] ist mit /pathinfo belegt.

    Wie bekomme ich es also hin, selbst nur mit Pfadangaben zum Ziel zu kommen?

    Ansonsten fällt mir nur noch mod_rewrite ein, womit man ohne den bei Alias nötigen URL-Teil auskommt.

    # wenn Verzeichnis nicht existiert  
    RewriteCond %{REQUEST_FILENAME} !-d  
    # wenn Datei nicht existiert  
    RewriteCond %{REQUEST_FILENAME} !-f  
    # leite alles auf die index.php um, und hänge den Querystring wieder an.  
    RewriteRule  (.*) index.php [L,QSA]
    

    echo "$verabschiedung $name";

    1. Hallo,

      wenn Verzeichnis nicht existiert

      RewriteCond %{REQUEST_FILENAME} !-d

      wenn Datei nicht existiert

      RewriteCond %{REQUEST_FILENAME} !-f

      leite alles auf die index.php um, und hänge den Querystring wieder an.

      RewriteRule  (.*) index.php [L,QSA]

        
        
      Danke, ich werde mich wohl mehr mit Mod\_Rewrite außeinandersetzen müssen.  
      Gruß, Tomas
      
    2. hi,

      Was in den Wikipedia-URLs auffällt, ist der immer gleiche Teil "wiki". Dieser wäre im Prinzip nicht nötig.

      Doch, wenn man PATH_INFO verwenden will, muss der Apache zumindest auf einen Teil der Adresse "physisch" zugreifen können.

      Du kannst http://example.com/index.php/blubb verwenden - weil der Apache unter index.php eine Scriptdatei findet, und dieser dann den Rest des Request-URI als PATH_INFO übergeben kann.

      http://example.com/blubb geht aber nicht (wenn keine Datei/Verzeichnis blubb existiert) - der Apache findet nichts, was er als Ziel dieser Anfrage ausmachen könnte.

      Meine Vermutung ist, dass dieser jedoch technisch nötig ist, um einen Alias greifen zu lassen.

      Genau.

      Es muss aber kein Alias sein - es reicht genauso aus, wenn die Scriptdatei, um dem Wikipedia-Beispiel zu bleiben, den Namen wiki trägt, ohne irgendeine Dateiendung. Dann muss man ihm nur noch sagen, dass er diese Datei durch den PHP-Parser schicken soll - beispielsweise per <Files>-Direktive und ForceType.

      Wenn es aber ohne so ein "Präfix" im URL funktionieren soll - dann muss halt doch mod_rewrite o.ä. ran.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. echo $begrüßung;

        Was in den Wikipedia-URLs auffällt, ist der immer gleiche Teil "wiki". Dieser wäre im Prinzip nicht nötig.

        Doch, wenn man PATH_INFO verwenden will, muss der Apache zumindest auf einen Teil der Adresse "physisch" zugreifen können.

        Ich hab mich da nicht klar auszudrücken vermocht, und du hast mich da nicht richtig verstanden. Dass dieser Teil aufgrund der verwendeten technischen Lösung enthalten ist, steht auf einem anderen Blatt. Dazu kam ich ja in meinen weiteren Ausführungen. Weitere (sinnvolle) Gründe sehe ich jedoch nicht, also ist dieser Teil im Prinzip verzichtbar.

        echo "$verabschiedung $name";

        1. hi,

          Weitere (sinnvolle) Gründe sehe ich jedoch nicht, also ist dieser Teil im Prinzip verzichtbar.

          Allgemein ja, aber bei Verwendung von PATH_INFO eben nicht.

          gruß,
          wahsaga

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

      Was in den Wikipedia-URLs auffällt, ist der immer gleiche Teil "wiki". Dieser wäre im Prinzip nicht nötig. Meine Vermutung ist, dass dieser jedoch technisch nötig ist, um einen Alias greifen zu lassen.

      Es ist tatsächlich möglich, auf diesen Teil zu verzichten: http://meta.wikimedia.org/wiki/Using_a_very_short_URL. Zumindest eine der dort angegebenen Möglichkeiten entspricht im Prinzip deinem Vorschlag.

      Schöne Grüße,

      Johannes