Apache mod_alias, mod_rewrite und GET-Parameter

Das Umleiten von einer Seite auf eine andere ist mit mod_alias sehr einfach:

Redirect /mydestination http://example.net/

Das geht auch noch recht einfach mit Regex wenn man einzelne Bereiche woanders hinschreiben will. Um diese URL-Transformation zu machen:

  • http://foobar.net/mydestination/folder/page.php -> http://example.net/foobar/folder/stuff/page.php

den folgenden RedirectMatch verwenden:

RedirectMatch ^/mydestination/(.*)/(.*)$ http://example.net/foobar/$1/stuff/$2

Wenn man jedoch mit GET-Parametern rumhantieren will, muss man mod_rewrite anstatt mod_alias nehmen. Fuer die folgende URL-Transformation:

  • http://example.net/mydestination/getstuff?pagename=foo.bar -> http://exmpla.net/blafasel/foo.bar

kann man diese Regel nutzen:

RewriteEnginge On
RewriteCond %{REQUEST_URI}  ^/mydestination/getstuff$
RewriteCond %{QUERY_STRING} ^pagename=(.*)$
RewriteRule ^(.*)$ http://example.net/blafasel/%1? [R=302,L]

prego

/me... prego!

2 Gedanken zu „Apache mod_alias, mod_rewrite und GET-Parameter“

  1. Danke für deine Beschreibung.

    Ich möchte diese Adresse
    http://www.domain.de/pfad1/pfad2/pfad3/ab.cde/123.htm?search=suchbegriff&submit_search=enter
    hierhin
    http://www.domain.de/suche.html?keywords=suchbegriff

    weiterleiten.

    Nach deiner Vorlage habe ich es so versucht

    RewriteCond %{REQUEST_URI} ^/pfad1/pfad2/pfad3/ab.cde/123.htm$
    RewriteCond %{QUERY_STRING} ^search=suchbegriff&submit_search=enter$
    RewriteRule ^$ http://www.domain.de/suche.html?keywords=suchbegriff? [L,R=301]

    Funktioniert leider nicht. Was mache ich falsch?

    Danke vorab.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.