Manchmal 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]
Heute habe ich noch einen hervorragenden Rewrite-Rule-Generator gefunden, der diesen Sonderfall und alle anderen denkbaren ebenfalls abdeckt:
http://donatstudios.com/RewriteRule_Generator
Hallo!
Wie funktioniert aber eine solche Umleitung?
http://www.server.de/news.php?id=44 soll nach http://www.server.de/index.php?nachrichtenId=44
und
http://www.server.de/title.php?id=44 soll nach http://www.server.de/index.php?titelId=44
Vielen Dank
Jan
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]
Danke!