Regulärer Ausdruck für .htaccess / mod_rewrite
sr
- programmiertechnik
Hallo,
möchte nur fragen, ob man den regulären Ausdruck noch besser schreiben kann.
Im Root des Webservers liegt die Datei index.php
Der Benutzer soll eine Adresse wie zum Beispiel http://beispielserver/www.meinedomain.de eingeben dürfen, die dann mittels mod_rewrite umgeleitet werden soll auf http://beispielserver/index.php?Project=www.meinedomain.de
Dazu habe ich in der .htaccess-Datei mod_rewrite aktiviert und folgende RewriteRule geschrieben:
RewriteRule ^(?!(index|css|images))(.+)$ index.php?Project=$2
Der Ausschluss (?!(index|css|images)) dient dazu, CSS-Dateien, Grafiken und die Datei index.php nicht noch einmal durch mod_rewrite prüfen zu lassen und dort fehlerhaft umgeleitet zu werden.
Habs alternativ auch schon mit dem Flag [L] versucht, aber das half nicht, die erneute Prüfung zu unterbinden (ist soweit ich verstanden habe auch nur dafür da, evtl. weitere Regeln zu überspringen).
Danke für die Hilfe.
Dazu habe ich in der .htaccess-Datei mod_rewrite aktiviert und folgende RewriteRule geschrieben:
RewriteRule ^(?!(index|css|images))(.+)$ index.php?Project=$2
Der Ausschluss (?!(index|css|images)) dient dazu, CSS-Dateien, Grafiken und die Datei index.php nicht noch einmal durch mod_rewrite prüfen zu lassen und dort fehlerhaft umgeleitet zu werden.
Das bezweifele ich.
In Perl bedeutet (?!pattern) Siehe dass das nächste nicht das pattern matcht.
Ich bezweifle aber dass Apache Perl-Pattern dieser Version überhaupt interpretieren.
Du wirst vielmehr eine RewriteCond gebrauchen, um den Match, den nicht behandelt haben willst, anders zu handhaben, nämich mit einem echten NOT nach Apache Syntax.
mfg Beat
»» Der Ausschluss (?!(index|css|images)) dient dazu, CSS-Dateien, Grafiken und die Datei index.php nicht noch einmal durch mod_rewrite prüfen zu lassen und dort fehlerhaft umgeleitet zu werden.
Das bezweifele ich.
In Perl bedeutet (?!pattern) Siehe dass das nächste nicht das pattern matcht.
Ich bezweifle aber dass Apache Perl-Pattern dieser Version überhaupt interpretieren.
Apache 2.x nutzt die PCRE-Bibliothek und unterstützt entspr. auch diese Syntax.
Hallo,
möchte nur fragen, ob man den regulären Ausdruck noch besser schreiben kann.
[...]
RewriteRule ^(?!(index|css|images))(.+)$ index.php?Project=$2
Du könntest die erste Gruppe als nicht-speichernd notieren, das L flag ist auch nie verkehrt. Wenn du nur diese eine Regel hast, ist das natürlich egal.
RewriteRule ^(?!(?:index|css|images))(.+)$ index.php?Project=$1 [L]