web-dev-qa-db-fra.com

Wordpress redirection htaccess multisite vers un nouveau domaine

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.

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

  • N'oubliez pas d'échapper aux points du pattern pour faire correspondre les points littéraux (vous en avez échappé certains et pas d'autres).
  • J'ai omis le $ final sur le CondPattern qui vérifie HTTP_Host afin d'attraper le nom de domaine complet (qui se termine par un point).
  • J'ai ajouté l'indicateur 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
0
MrWhite