RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
Toutes les publications des URL redirigent avec succès. Mais le problème, c’est que mon vieux site_id
multisite est différent du nouveau site_id
multisite.
Donc, tout site.olddomain.com/wp-content/uploads/sites/7/..
est redirigé vers site.newdomain.com/wp-content/uploads/7/..
.
Mais le site_id
du nouveau domaine est 2
, pas 7
.
J'ai essayé ça
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]
Mais encore, il redirige à tort.
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$
La variable de serveur HTTP_Host
contient uniquement le nom d'hôte (la valeur de l'en-tête de la requête HTTP Host
). Il ne contient pas le chemin de l'URL, donc le condition ci-dessus ne va jamais correspondre.
Mais le site_id dans le nouveau domaine est 2.
Mais votre directive semble essayer de faire le contraire ... rechercher 2
sur le site.olddomain.com
et rediriger vers 7
sur le nouveau domaine? (Mais qu'en est-il de vos autres sites?)
RewriteRule ^(.*)$ https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
Vous semblez également avoir omis le trait d'union (-
) dans wpcontent
?
Vous devez écrire cette redirection spécifique de la manière suivante:
RewriteCond %{HTTP_Host} ^site\.olddomain\.com [NC]
RewriteRule ^(wp-content/uploads/sites)/2/(.*) https://site.newdomain.com/$1/7/$2 [R=301,L]
Quelques notes:
$
final sur le CondPattern qui vérifie HTTP_Host afin d'attraper le nom de domaine complet (qui se termine par un point).NC
à la directive RewriteCond
pour rendre la vérification insensible à la casse. C’est vraiment juste pour attraper les requêtes mal formées (tout navigateurs mettra en minuscule le nomhôte dans la requête).RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR] RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
Ces deux directives RewriteCond
peuvent être combinées en une seule, en faisant simplement www.
part optional :
RewriteCond %{HTTP_Host} ^(www\.)?site\.olddomain\.com