RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
Alle Beitrags-URLs werden erfolgreich umgeleitet. Das Problem ist jedoch, dass sich mein alter site_id
für mehrere Standorte von dem neuen site_id
für mehrere Standorte unterscheidet.
Alle site.olddomain.com/wp-content/uploads/sites/7/..
werden also zu site.newdomain.com/wp-content/uploads/7/..
umgeleitet.
Der site_id
in der neuen Domain ist jedoch 2
und nicht 7
.
Ich habe es versucht
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$
RewriteRule ^(.*)$
https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
Aber es leitet immer noch falsch um.
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$
Die Servervariable HTTP_Host
enthält nur den Hostnamen (den Wert des HTTP-Anforderungsheaders Host
). Es enthält keinen URL-Pfad, daher wird die obige Bedingung niemals zutreffen.
Die site_id in der neuen Domain ist jedoch 2.
Aber Ihre Direktive scheint das Gegenteil zu versuchen ... auf 2
im site.olddomain.com
suchen und auf 7
in der neuen Domain umleiten? (Aber was ist mit deinen anderen Sites?)
RewriteRule ^(.*)$ https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
Sie scheinen auch den Bindestrich (-
) in wpcontent
weggelassen zu haben?
Sie müssen diese spezielle Weiterleitung wie die folgende intsead schreiben:
RewriteCond %{HTTP_Host} ^site\.olddomain\.com [NC]
RewriteRule ^(wp-content/uploads/sites)/2/(.*) https://site.newdomain.com/$1/7/$2 [R=301,L]
Einige Notizen:
$
auf dem CondPattern weggelassen, der gegen HTTP_Host prüft, um den vollqualifizierten Domänennamen (der mit einem Punkt endet) abzufangen.NC
-Flag zur RewriteCond
-Direktive hinzugefügt, um die Prüfung auf Groß- und Kleinschreibung zu beschränken. Dies dient nur dazu, fehlerhafte Anforderungen abzufangen (alle Browser setzen den Hostnamen in der Anforderung in Kleinbuchstaben).RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR] RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
Diese beiden Anweisungen für RewriteCond
können zu einer zusammengefasst werden, indem einfach der Teil www.
optional angegeben wird:
RewriteCond %{HTTP_Host} ^(www\.)?site\.olddomain\.com