ChrisB: mod_rewrite

Beitrag lesen

Hi,

Vielleicht übersehe ich etwas, aber was spricht gegen ein einfaches:

RewriteEngine on
RewriteRule ^/willkommen$ /index.php?cat=2&article=5
RewriteRule ^/impressum$ /index.php?cat=4&article=2

Die führenden Slashes in den Pattern sind da fehl am Platze, wenn das per .htaccess konfiguriert wird – in dem Kontext ist der Pfad zum aktuellen Verzeichnis immer schon „abgeschnitten“ worden. (Und wenn sich das ganze direkt unter dem Domain-Root abspielt, dann ist dieser abgeschnittene „Pfad zum aktuellen Verzeichnis“ einfach "/".) Und die führenden Slashes in den Ersetzungen braucht es hier m.E. auch nicht.

RewriteRule ^willkommen$ index.php?cat=2&article=5  
RewriteRule ^impressum$ index.php?cat=4&article=2

Oder explizit zum Host mit oder ohne www weiterleiten:

RewriteRule ^/willkommen$ http://www.example.org/index.php?cat=2&article=5
usw.

Das ist dann ein interner Redirect, wenn www.example.org bereits der aktuelle Host ist, ansonsten ein externer HTTP-Redirect.

Dann wirst du bei Aufruf von http://example.org/willkommen aber extern auf http://www.example.org/index.php?cat=2&article=5 weitergeleitet, und das ist idR. nicht das beabsichtigte Verhalten:
Das /willkommen willst du ja nach außen hin beibehalten, und auf http://www.example.org/willkommen weitergeleitet werden.

Das macht man also besser mit einer vorangestellten extra Regel, die nur die Aufgabe hat auf Aufruf über die non-www-Version des Hostnamens zu prüfen und dann auf die www-Version weiterzuleiten (oder vice versa) – und anschließend die gegenwärtige „Runde“ des Rewritings für beendet erklärt, mittels [L]-Flag.

MfG ChrisB

--
Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/