RewriteRule verzweifelt gesucht

kleinesµ

Ensign
Registriert
Feb. 2004
Beiträge
166
Hallo liebe Community,

ich habe ein Problem mit mod_rewrite, da ich alte URLs zu neuen Pfaden weiterleiten muss.

Beispiel (URLs sind erdacht, spiegeln aber die Form meiner URLs wider):

http://test.de/tester/index.php?pfad=45_6_249 soll zu http://test.de/tester/farbe/blau:::45_6_249 .html weiterleiten
oder
http://test.de/tester/index.php?pfad=41_2_219 soll zu http://test.de/tester/form/rund:::41_2_219.html weiterleiten
usw...

Die einfachste Variante (mit Redirect Permanent) funktioniert leider auf dem Server nicht.
Code:
Redirect permanent /tester/index.php?pfad=41_2_219 /tester/form/rund:::41_2_219.html

Der Admin sagte mir, dass redirect dafür nicht so geeignet ist, und man derartige Befehle mit einer RewriteRule und [R=301,L] realisiert.
Mir ist zwar bekannt, wie man mit RewriteCond und RewriteRule die URLs von Shops oder Foren für Suchmaschinen optimiert / bearbeitet, aber hier handelt es sich ja um einzelne Weiterleitungen. Ich möchte ja nicht Variablen übergeben und zu Verzeichnissen machen....

Meine bisherigen Versuche klappen einfach nicht... z.B.
Code:
RewriteRule ^tester/index.php?pfad=41_2_219 http://test.de/tester/form/rund:::41_2_219.html [R=301,L]
Dürfen in der RewriteRule keine Fragezeichen stehen?

Trotz aller google- und CB-Foren-Recherche komme ich nicht weiter, bitte um Hilfe bevor ich meine Tastatur gegen die Wand ballere :freak:
 
hm... so verkehrt sie die auf den ersten blick gar nicht aus.
denk dran, dass browser auch gern mal die Redirect-Regeln mit cachen, genauso wie DNS-Auflösungen. Im Zweifel: Cache aus für solche Experimente.
 
Korrekt, das mit dem Browsercache habe ich auch schon mitbekommen und deshalb den Cache für den Testzeitraum deaktiviert.
 
Hallo kleinesµ,
folgender Code hilft dir weiter:

Code:
<ifmodule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
		
	# tester/index.php?pfad=45_6_249 soll zu tester/farbe/blau:::45_6_249 .html
	RewriteCond %{QUERY_STRING} ^pfad=(45_6_249)$
	RewriteRule ^tester/index\.php$ tester/farbe/blau---%1.html? [NC,L]

	# tester/index.php?pfad=41_2_219 soll zu /tester/form/rund:::41_2_219.html
	RewriteCond %{QUERY_STRING} ^pfad=(41_2_219)$
	RewriteRule ^tester/index\.php$ tester/form/rund---%1.html? [R=temporary,NC,L]

	# oder [R=permanent,NC,L]
	
</ifmodule>

Das kannste so in eine .htaccess packen. Dann hast du 3 Möglichkeiten:
1. nur internes URL-Rewriting: deine URL bleibt erhalten, dann wie in Zeile 7
2. temporäre Weiterleitung: URL wird ersetzt, aber Weiterleitung wird nicht vom Browser zwischengespeichert: wie Zeile 11
3. permanente Weiterleitung: URL wird ersetzt und Browser (Suchmaschinen) merken sich das: wie Kommentar in Zeile 13

Ich habe statt deiner ":::" "---" verwendet, weil ich auf meinem Windowssystem diese Zeichen nicht verwenden kann. ;-)

Hoffe das hilft dir weiter :-)

Gruß M1-JDGAG :-)
 
Vielen Dank für die umfangreiche Antwort und die Tipps!
Es hat genau so funktioniert :)
 
Zurück
Oben