
Ich stecke beim Rewritemap-Problem fest.
Ich möchte Tausende von alten, fast zufälligen URLs auf neue umleiten. Ich werde die Karte manuell erstellen, aber ich brauche diesen Code, damit es funktioniert.
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.cat_4)(.*)
RewriteRule .* ${url_rewrite_map:$1|NOTFOUND}? [R=301,L]
Ich möchte, dass die Karte so aussieht:
example.com/abcd/cat_4 http://example.com/345_exact_address_of_page
Alte URLs sehen so aus:
und ich möchte, dass sie wie folgt umgeschrieben werden:
Ich habe vieles versucht, aber ich kriege es nicht zum Laufen ... Können Sie mir dabei helfen?
Antwort1
Sie verwenden $1 als Suchschlüssel in Ihrer Karte, aber dieser Parameter enthält nur das, was Sie in der RewriteRule erfassen. Zeichenfolgen, die Sie in Ihrer RewriteCond erfassen, werden in %1, %2 usw. erfasst.
Sie sollten also etwas in der Art verwenden:
RewriteCond %{HTTP_HOST} (^example\.com)
RewriteCond %{REQUEST_URI} (/abcd/cat_4)
RewriteRule .* ${url_rewrite_map:%1%2|NOTFOUND} [R=301,L]
Antwort2
OK, ich habe es zum Laufen gebracht. Für alle anderen ist hier die Lösung.
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.abcd=.*)
RewriteRule .* ${url_rewrite_map:%1|$1}? [R=301,L]
Um auf Krist van Besiens Antwort zu antworten: Ich glaube, Sie können %1%2%3 nicht verwenden, da Sie eine Zeile davor, zwei Zeilen davor usw. verwenden. %n bezieht sich nur auf die letzte RewriteCond-Zeile, also musste ich alles in eine Zeile packen und dann die Karte überprüfen. Aber trotzdem danke, Sie haben mich in die richtige Richtung gelenkt :)