kleines mod_rewrite-Problem
Mark
- webserver
0 Christoph Jeschke0 ChrisB0 dedlfix
Hallo,
ich möchte mit mod_rewrite von http://example.com/xyz nach http://example.com/index.php?page=xyz umleiten. Dabei soll index.php selbst von der Regel ausgeschlossen werden und auch wenn nur http://example.com/ oder http://example.com/?foo=bar&bar=foo eingegeben wird, soll nicht umgeleitet werden.
So weit bin ich bis jetzt:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^.*index.php$ [NC]
RewriteRule ^(.*)$ index.php?page=$1
Wie kann ich jetzt noch per RewriteCond einen leeren String nach http://example.com/ bzw. wie oben beschrieben http://example.com/?foo=bar&bar=foo ausfiltern?
Und noch ein Problem: wenn ich http://example.com/Lorem_ipsum. eingebe, steht in $_GET['page'] nur Lorem_ipsum ohne Punkt drin. Warum wird der Punkt abgeschnitten?
Danke!
Mark
Guten Tag,
So weit bin ich bis jetzt:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^.*index.php$ [NC]
RewriteRule ^(.*)$ index.php?page=$1
Wie kann ich jetzt noch per RewriteCond einen leeren String nach
http://example.com/ bzw. wie oben beschrieben http://example.com/?foo=bar&
bar=foo ausfiltern?
Du kannst mehrere RewriteCond-Direktiven angeben, die alle erfüllt sein müssen.
Gruß
Christoph Jeschke
Hi,
Wie kann ich jetzt noch per RewriteCond einen leeren String nach http://example.com/ bzw. wie oben beschrieben http://example.com/?foo=bar&bar=foo ausfiltern?
"Leer" waere ^$, und fuer den Querystring nach dem "Leeren" interessiert sich eine RewriteRule per se sowieso nicht.
Und noch ein Problem: wenn ich http://example.com/Lorem_ipsum. eingebe, steht in $_GET['page'] nur Lorem_ipsum ohne Punkt drin. Warum wird der Punkt abgeschnitten?
Das macht der Apache m.W. schon bevor er ueberhaupt mit dem Rewriting anfaengt, und mir ist auch keine Moeglichkeit bekannt, ihm das abzugewoehnen.
MfG ChrisB
Hallo ChrisB,
"Leer" waere ^$, und fuer den Querystring nach dem "Leeren" interessiert sich eine RewriteRule per se sowieso nicht.
http://example.com/?foo=bar kann ich jetzt aufrufen. Aber bei http://example.com/Lorem_ipsum kommt ein 404er.
Das macht der Apache m.W. schon bevor er ueberhaupt mit dem Rewriting anfaengt, und mir ist auch keine Moeglichkeit bekannt, ihm das abzugewoehnen.
Hm, interessant... nur warum?
Mark
Hi,
http://example.com/?foo=bar kann ich jetzt aufrufen. Aber bei http://example.com/Lorem_ipsum kommt ein 404er.
Und wie sehen deine aktuellen Conditions und Rules aus?
MfG ChrisB
echo $begrüßung;
Nur ein Teilaspekt, weil du die anderen ja schon beantwortet bekamst:
Dabei soll index.php selbst von der Regel ausgeschlossen werden
Bist du sicher, dass du nur die index.php ausschließen willst? Üblicherweise hat man ja noch mehr Dateien und Verzeichnisse da liegen, die man einfach so durchreichen will, also nicht umschreiben will. Beispiele wären Bilder oder CSS-Dateien. Es ist dann günstiger, alle real existierenden Dateien und Verzeichnisse vom Umschreiben auszuschließen:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
echo "$verabschiedung $name";
Hallo dedlfix,
... alle real existierenden Dateien und Verzeichnisse vom Umschreiben auszuschließen:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Danke, das ist ein guter Tipp! Bleibt nur noch die Sache mit dem Punkt (http://example.com/Basta. wird nach http://example.com/index.php?page=Basta ohne Punkt weitergeleitet). Hat da jemand eine Idee, warum das so ist?
Mark
Bleibt nur noch die Sache mit dem Punkt (http://example.com/Basta. wird nach http://example.com/index.php?page=Basta ohne Punkt weitergeleitet). Hat da jemand eine Idee, warum das so ist?
Weil es in dem Dateisystem auf welchem du den Apache zu laufen hast (Windows?) keine Dateinamen gibt, die nur mit einem Punkt enden.
Hallo Bob,
Weil es in dem Dateisystem auf welchem du den Apache zu laufen hast (Windows?) keine Dateinamen gibt, die nur mit einem Punkt enden.
Tatsächlich, auf dem Linux-Server geht's! Danke Euch, das Problem ist damit gelöst.
Hier nochmal für's Archiv:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1
Mark