Zitat von
stefan-at-work
könnte ich z.B. auf die Startseite weiterleiten. Soweit so gut.
Einfach nur auf die Startseite weiterleiten solltest du nicht. Wenn der Inhalt einer alten URL unter einer neuen URL zu finden ist, solltest du dort hin weiterleiten. Ansonsten sollte die 404 Seite erscheinen. Aber vielleicht habe ich dich da falsch verstanden?
Zitat von
stefan-at-work
könnte ich z.B. auf die Startseite weiterleiten. Soweit so gut. Jedoch interessiert mich lediglich der Parameter catid=. Aufgrund dieser diversen catids definiere ich, auf welche URL umgeleitet werden soll.
Das ^ in der RewriteCond definiert ja den Anfang, $ das Ende.
Gibt es einen Platzhalter, der nach dem ^ bis zum Parameter catid=? den entsprechenden Inhalt des Strings ignoriert?
also quasi so: RewriteCond %{QUERY_STRING} ^(*)catid=396(.*)$
wobei das (*) nach dem ^ nicht funktioniert.
Wenn dann muss es so sein:
Code:
RewriteCond %{QUERY_STRING} ^(.*)catid=396(.*)$
Du hattest den Punkt vergessen (any character). Das ^ ist aber dann überflüssig, weil durch (.*) spielt es keine Rolle, ob es am Anfang steht oder nicht, daher ist die nächste Vereinfachung
Code:
RewriteCond %{QUERY_STRING} (.*)catid=396(.*)$
Darüberhinaus brauchst du den ersten Teil ja gar nicht, also kann es auch einfach
Code:
RewriteCond %{QUERY_STRING} .*catid=396(.*)$
sein. Dadurch ist aber wiederum das .* überflüssig, weil das ja beliebige Zeichen matched, daher reicht auch
Code:
RewriteCond %{QUERY_STRING} catid=396(.*)$
Weiters willst du ja den Wert des Parameters catid haben, oder nicht? Daher muss es im Endeffekt so lauten:
Code:
RewriteCond %{QUERY_STRING} catid=(.+)
Das würde aber alles nach catid= matchen, daher musst du das weiter einschränken, zB so:
Code:
RewriteCond %{QUERY_STRING} catid=([0-9]+)
Das würde nur Zahlen matchen.
Beispiel: https://regex101.com/r/nC7qK7/1
// oder kannst du nur bestimmte catids auf hardgecodete URLs weiterleiten? Wenn ja, dann ist die Rewritecond einfach
Code:
RewriteCond %{QUERY_STRING} catid=396(&|$)
» https://regex101.com/r/nC7qK7/2
Die Regex bedeutet übersetzt: "Suche nach dem Substring catid=396, gefolgt entweder von einem & oder es ist am Ende des Strings".
//² falls es vorkommen könnte, dass es auch andere GET Parameter gibt, die zufällig mit "catid" Enden, dann kann man die Regex nochmals erweitern:
Code:
RewriteCond %{QUERY_STRING} (^|&)catid=396(&|$)
» https://regex101.com/r/nC7qK7/3
Lesezeichen