web-dev-qa-db-fra.com

Comment configurer un réseau multisite avec des noms d'hôte aléatoires?

J'essaie de convertir un WordPress fraîchement installé et fonctionnel en un réseau multisite. Mais j'ai des problèmes à cause de notre configuration Apache.

Nous utilisons Apache pour rediriger de manière aléatoire les demandes de domain.com vers l'un des deux serveurs d'applications: app1.domain.com ou app2.domain.com. Le problème est que WordPress redirige vers DOMAIN_CURRENT_SITE (défini dans wp-config.php) si le domaine de navigateur actuel diffère de celui. Cela se traduit par une boucle de redirection 310. Voici un exemple de ce qui se passe:

  1. Requêtes utilisateur domain.com/apps/wordpress/
  2. Apache redirige vers app1.domain.com/apps/wordpress/
  3. Comme le domaine de redirection ne correspond pas à DOMAIN_CURRENT_SITE, WordPress redirige vers DOMAIN_CURRENT_SITE (domain.com/apps/wordpress/).
  4. Revenez à l'étape 1 et répétez

Ce que je voudrais faire est de définir tous les liens WordPress et les URL sur domain.com et que WordPress ignore le fait que app1.domaine.fr ou app2.domaine.fr est en fait en cours de récupération. Est-ce possible?

Voici les fichiers de configuration Apache pertinents (simplifiés), au cas où je ne serais pas tout à fait clair:

application_servers.conf:

domain.com-prod-http  app1.domain.com:80|app2.domain.com:80

httpd.conf:

RewriteMap server rnd:conf/application_servers.conf
RewriteRule ^/apps/*([^/]*)/*(.*) http://${server:domain.com-prod-http}/apps/$1/$2 [P,L,QSA]
1
Zac

Après avoir frappé ma tête pendant quelques jours, j'ai trouvé une solution qui fonctionne.

Ajoutez simplement ce qui suit à wp-config.php:

if ( isset( $_SERVER['HTTP_X_FORWARDED_Host'] ) ) {
    $_SERVER['HTTP_Host'] = $_SERVER['HTTP_X_FORWARDED_Host'];
}

Cela forcera WordPress à utiliser le domaine demandé au lieu du domaine proxy.

1
Zac