tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
244
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tomate tomate ist offline Mitglied Gold
    Registriert seit
    Jun 2003
    Beiträge
    210
    Hallo zusammen,

    ich habe dies Zeile in einer htaccess-Datei stehen:
    Code :
    1
    2
    3
    4
    
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?qs=$1 [L]

    Ziel ist es, alle Parameter nach der TLD (Top Level Domain) als Wert an die index.php zu übergeben.
    Das ganze funktioniert sowei auch. Nur kann ich nicht ganz nachvollziehen, wieso

    Alles was diese RewriteRule findet wird ja in $1 gespeichert.
    Angenommen ich habe nun z. B. dies Adresse >http://www.tutorials.de/kontakt<, dann wird in $1 der String kontakt gespeichert.

    Wer sagt der RewriteEngine eigentlich, daß erst alles nach dem http://www.tutorials.de/ in $1 gespeichert werden soll?
    Kann man das irgendwie einstellen, oder ist das fest implementiert?

    Die Angabe >RewriteCond %{REQUEST_FILENAME} !-f< bedeuted doch, das der Wert in $1 kein keine Datei sein darf?!
    Sprich, wenn $1 eine Datei wäre, würde die Rule nicht starten. Ist das soweit richtig?

    Wenn ja, wie erkennt die RewriteCond eigentlich überhaupt, das kontakt.php eine Datei ist?

    Viele Grüße und Danke - Tomate
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.519
    Zitat Zitat von tomate Beitrag anzeigen
    Wer sagt der RewriteEngine eigentlich, daß erst alles nach dem http://www.tutorials.de/ in $1 gespeichert werden soll?
    mod_rewrite ist ein Apache-Modul, und als solches hat es natürlich auch die gleichen Fähigkeiten, wie Apache selbst. Woher weiß Apache denn, das du mit http//www.tutorials.de/index.php auf eine Datei zugreifen willst? Es steht nirgends geschrieben, das es nicht auch einen Ordner mit dem Namen index.php geben darf. Zugegeben, das wäre etwas blödsinnig und niemand würde das machen. Aber möglich wäre es. Somit kann die Frage nur damit beantwortet werden, dass Apache im Datei-Sytem nach schaut, was es denn nun eigentlich ist (Erklärung mit deiner letzten Frage). Dabei wird ein Domänenname auf ein lokales Verzeichnis, ein sog. DocumentRoot gemappt. Alles was also nach dem Domänennamen kommt, muss im lokalen Dateisystem existieren, wenn auch nur virtuell.

    Zitat Zitat von tomate Beitrag anzeigen
    Kann man das irgendwie einstellen, oder ist das fest implementiert?
    Nein und ja. mod_rewrite kann bei %{REQUEST_FILENAME}, wie schon erwähnt, nur im lokalen Dateisystem operieren.

    Zitat Zitat von tomate Beitrag anzeigen
    Die Angabe >RewriteCond %{REQUEST_FILENAME} !-f< bedeuted doch, das der Wert in $1 kein keine Datei sein darf?!
    Sprich, wenn $1 eine Datei wäre, würde die Rule nicht starten. Ist das soweit richtig?
    So kann man das sehen. Und da die Kondition (kein Verzeichnis) auch noch hinten anhängt, trifft deine Rule also nur auf nicht-existente Verzeichnis-Einträge zu.

    Zitat Zitat von tomate Beitrag anzeigen
    Wenn ja, wie erkennt die RewriteCond eigentlich überhaupt, das kontakt.php eine Datei ist?
    mod_rewrite ist in C geschrieben und kann den Typ eines Verzeichnis-Eintrags mittels der glibc-Funktion stat() herausfinden.

    Zusätzlich möchte ich dich noch auf diese schöne Seite leiten.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Maik Tutorials.de Gastzugang
    Hi,

    was hat deine Verständnisfrage zur .htaccess-Datei bzw. zum mod_rewrite-Modul speziell mit PHP zu tun, blos weil da eine index.php-Datei im Spiel ist?

    Von daher leite ich das Thema ins Forum für "Hosting & Webserver" weiter.

    mfg Maik
     

  4. #4
    tomate tomate ist offline Mitglied Gold
    Registriert seit
    Jun 2003
    Beiträge
    210
    @saftmeister
    Sehr gute Erklärung - Danke

    @Maik: Sorry für das plazieren im falschen Bereich.

    Viele Grüße und Danke - Tomate
     

Ähnliche Themen

  1. seit Ubuntu heißt .htaccess uft8.htaccess und geht nicht mehr?
    Von supersalzi im Forum Hosting & Webserver
    Antworten: 4
    Letzter Beitrag: 17.08.09, 17:21
  2. verständnisfrage zu GWT
    Von dell_mann im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 07.05.09, 20:18
  3. Verständnisfrage
    Von wSam im Forum Java
    Antworten: 7
    Letzter Beitrag: 22.08.06, 20:21
  4. Verständnisfrage....
    Von saila im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 04.07.06, 02:23
  5. Antworten: 29
    Letzter Beitrag: 15.02.05, 03:08