web-dev-qa-db-fra.com

Nginx config, comment puis-je rediriger le domaine multisite principal, mais ses sous-dossiers, ni d'autres domaines?

Environnement

Cet environnement est Nginx avec Wordpress Multisite installé.

Question

Je dois rediriger le domaine multisite principal (par exemple, domain.com, www.domain.com) vers un autre domaine (par exemple, domain-new.com, www.domain-new.com). Mais je ne veux pas que les sous-dossiers soient redirigés. Par exemple, les dossiers/wp-admin/ne doivent PAS être redirigés, sinon je ne pourrai pas administrer le réseau multisite.

Évidemment, je ne veux pas que d'autres domaines soient redirigés. Juste celui mentionné ci-dessus.

J'ai trouvé des instructions sur la procédure à suivre dans Apache, mais je n'ai pas réussi à le comprendre dans Nginx.

Ce que je suis venu avec jusqu'à présent

Je suis tombé sur ce qui suit:

server {
  listen 80;
  server_name domain.com www.domain.com;
  rewrite ^ $scheme://www.domain-new.com$request_uri permanent;

Mais cela redirigera également les sous-dossiers de domain.com. J'étais sur comment faire pour exclure le dossier wp-admin de la redirection.

J'ai aussi rencontré cette option:

location = / {
rewrite ^ http://domain-new.com/$uri permanent;    
}

Mais je ne trouvais rien sur le fait que la commande location puisse inclure un domaine et si elle le pouvait, comment faire en sorte qu'un sous-dossier spécifique (wp-admin) ne soit pas inclus dans la redirection?

1
omega33

Si votre bloc serveur nginx gère plusieurs domaines, la solution la plus simple consiste à tester le paramètre $Host dans un bloc if. Modifiez également l'instruction rewrite afin qu'elle ne corresponde qu'à un seul URI.

Par exemple:

if ($Host = domain.com) {
    rewrite ^/$ https://new-domain.com permanent;
}

Ceci est placé près du sommet du bloc server existant.

0
Richard Smith