ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
244
244
EMPFEHLEN
-
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
-
14.03.10 20:02 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.519
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.
Nein und ja. mod_rewrite kann bei %{REQUEST_FILENAME}, wie schon erwähnt, nur im lokalen Dateisystem operieren.
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.
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 ;-)
-
14.03.10 20:05 #3Maik 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
-
@saftmeister
Sehr gute Erklärung - Danke
@Maik: Sorry für das plazieren im falschen Bereich.
Viele Grüße und Danke - Tomate
Ähnliche Themen
-
seit Ubuntu heißt .htaccess uft8.htaccess und geht nicht mehr?
Von supersalzi im Forum Hosting & WebserverAntworten: 4Letzter Beitrag: 17.08.09, 17:21 -
verständnisfrage zu GWT
Von dell_mann im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 07.05.09, 20:18 -
Verständnisfrage
Von wSam im Forum JavaAntworten: 7Letzter Beitrag: 22.08.06, 20:21 -
Verständnisfrage....
Von saila im Forum Flash PlattformAntworten: 4Letzter Beitrag: 04.07.06, 02:23 -
htaccess Login-Abfrage obwohl keine htaccess existiert
Von ronin im Forum PHPAntworten: 29Letzter Beitrag: 15.02.05, 03:08





Zitieren


Login





