mod_rewrite
Andreas Vogt
- webserver
0 Teufelchen0 suit
Hallo,
wie kann ich Variablen bei mod_rewrite verwenden?
Z.B. habe ich folgende Adresse:
index.php?ind=downloads&op=section_view&idev=1
Die soll nach ^downloads/section_view/1/index.html$ gelenkt werden.
Wie kann ich die Variable idev auslesen und verwenden?
Eine Regel lautet folgt:
RewriteRule ^downloads/index.html$ index.php?ind=downloads
Wie stell ich es an dass die index.html optional ist?
Gruß Andreas
index.php?ind=downloads&op=section_view&idev=1
Die soll nach ^downloads/section_view/1/index.html$ gelenkt werden.
Wie kann ich die Variable idev auslesen und verwenden?
Parameter, idev ist ein Parameter. Die URL-Parameter kannst du mittels RewriteCond zerlegen, dort gibt es eine Variable (keinen Parameter) namens QUERY_STRING:
RewriteCond %{QUERY_STRING} (?:^|[&;])idev=([0-9]+)(?:[&;]|$)
Die beiden Konstruke (?:^|[&;]) und (?:[&;]|$) sorgen dafür, dass vor und nach dem Parameter ein Parameter-Trennzeichen (& oder ;) kommt oder (|) sich dort der Anfang (^) bzw. das Ende ($) der gesamten Parameterkette befindet.
?: am Anfang der Klammer bewirkt, dass der Klammerinhalt nicht gespeichert wird, anders als bei ([0-9]+) in der Mitte, diesen Teil kannst du später woanders wieder einfügen (siehe unten).
In der PHP-Anleitung findet sich eine, wie ich meine, gute Anleitung zur PCRE-Bibliothek, die auch mod_rewrite benutzt.
In der auf RewriteCond folgenden RewriteRule-Zeile kannst du die mittels der runden Klammern aufgegriffenen Teile über %n einfügen, in diesem Beispiel:
RewriteRule [dein muster] downloads/section_view/%1/
RewriteRule ^downloads/index.html$ index.php?ind=downloads
Wie stell ich es an dass die index.html optional ist?
RewriteRule ^downloads(/index.html)?$ index.php?ind=downloads
Befasse dich unbedingt mit oben genannter PCRE-Anleitung. Über solche Muster wirst du immer wieder stolpern, und die Wiederholung (?: 0- oder 1-mal, +: mindestens einmal, *: beliebig oft, einschließlich überhaupt nicht, [n,m]: zwischen n und m Wiederholungen) gehört zu den grundlegendsten Grundlagen.
Danke,
hat mir sehr geholfen.
Gruß Andreas
schreibe bitte 100x 'ich soll keine "einladungen", meine website zu defacen, indem ich im stammverzeichnis ein file mit dem namen phpinfo.php erzeuge und das dann auch noch in einem öffentlichen forum verlinke und alle welt (google) wissen lasse, dass es existiert'