1 votes

Redirection Wildcard www vers non www nginx

Je voudrais rediriger tout le trafic de

www.*.*.<gTLD> à *.*.<gTLD>

Si possible, j'aimerais le faire en dehors du bloc qui sert l'application. Ce bloc n'utilise pas de server_name parce qu'il écoute plus de 5 000 noms d'hôtes sur la même application.

Avez-vous une idée de la manière d'y parvenir ? Tous les exemples que j'ai trouvés ne concernent que les hôtes nommés.....

Merci.

2voto

HugoFS Points 313

Vous pouvez définir un server avec une expression régulière server_name . Par exemple :

server {
    server_name ~^(www\.)(?<domain>.+)$;
    return 301 $scheme://$domain;
}

Véase ce document pour plus.

0 votes

Bien, c'est un bon début. Mais le problème est qu'avec ce que vous m'avez donné www.example.com va rediriger vers exemple.com. Et ce n'est pas ce que je veux. Je veux seulement que les sous-domaines soient redirigés vers des sites non www.

0 votes

Modifiez l'expression régulière pour qu'elle corresponde à vos besoins spécifiques. Ou si www.example.com est la seule exception - ajoutez-le à la server_name de votre default_server bloc.

0 votes

La regex complète est server_name ~^(www\.)(?<domain>.+\..+\..+)$;

0voto

Tristan Points 488

Avec l'aide de @Richard Smith je suis arrivé à un résultat de :

server {
    server_name ~^(www\.)(?<domain>.+\..+\..+)$;
    return 301 $scheme://$domain;
}

Cela fonctionne bien :-)

1 votes

Vous devriez donc voter en faveur de sa réponse et l'accepter. Vous pouvez ajouter votre regex (qui est la seule chose que vous avez modifié de sa réponse) comme un commentaire ou une modification.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X