it-swarm.com.de

Wordpress Multisite-HTAccess-Umleitung auf neue Domain

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.

2
Gani Siva kumar
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:

  • Vergessen Sie nicht, die Punkte im Muster zu maskieren, um wörtliche Punkte abzugleichen (Sie haben einige und andere nicht maskiert).
  • Ich habe den nachfolgenden $ auf dem CondPattern weggelassen, der gegen HTTP_Host prüft, um den vollqualifizierten Domänennamen (der mit einem Punkt endet) abzufangen.
  • Ich habe das 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
0
MrWhite