Rewrite-Rules für GET-Parameter

(c) BastianDietz / photocase.comManchmal steht man vor dem Problem, dass eine Website auf ein neues oder anderes Content Management System (z.B. Joomla! oder WordPress) umgestellt wird, man aber die alten URLs per Redirect auf die neuen umleiten möchte, z.B. um weiterhin per Google gefunden zu werden.

Intuitiv würde man dann Rewrite-Regeln wie die folgenden schreiben:

RewriteRule ^start/$ /start.html [R=301,L]
RewriteRule ^index.php?page=imprint$ /imprint.html [R=301,L]

Die erste Regel funktioniert auch problemlos, die  zweite allerdings nicht, weil die Parameter eines Requests nicht an der Stelle mit ausgewertet werden. Daher muss man anstelle dieser Regel mit einer Bedingung vorweg arbeiten:

RewriteCond %{QUERY_STRING} ^page=imprint$
RewriteRule ^index.php$ /imprint.html? [R=301,L]

4 Responses to “Rewrite-Rules für GET-Parameter”

  1. Arne P. Boettger sagt:

    Heute habe ich noch einen hervorragenden Rewrite-Rule-Generator gefunden, der diesen Sonderfall und alle anderen denkbaren ebenfalls abdeckt:

    http://donatstudios.com/RewriteRule_Generator

  2. Arne P. Boettger sagt:

    Moin!

    Der hier ebenfalls verlinkte Rewrite-Rule-Generator spuckt dazu folgendes aus:

    # 301 --- HTTP://www.server.de/news.php?id=44 => HTTP://www.server.de/index.php?nachrichtenId=44
    RewriteCond %{QUERY_STRING} (^|&)id=44($|&)
    RewriteRule ^news.php$ /index.php?nachrichtenId=44 [L,R=301]

    # 301 --- HTTP://www.server.de/title.php?id=44 => HTTP://www.server.de/index.php?titelId=44
    RewriteCond %{QUERY_STRING} (^|&)id=44($|&)
    RewriteRule ^title.php$ /index.php?titelId=44 [L,R=301]

Leave a Reply