web-dev-qa-db-fra.com

Les enregistrements DNS redirigent www vers non www

J'utilise Namecheap Domaines et Vultr Hébergement.

J'essaie de rediriger DNS www vers non www.

www.example.com à example.com


J'ai contacté Vultr et lui ai demandé comment faire cela avec leur gestionnaire DNS, ils ont dit qu'ils ne l'aideraient pas car il est autogéré. J'ai donc contacté Namecheap, ils ont dit qu'ils ne m'aideraient pas car ils n'ont pas accès au gestionnaire DNS de Vultr, ne me diraient pas si les enregistrements que je leur ai montrés sont corrects, et je devrais contacter Vultr. Je suis donc dans une boucle de support sans fin.


Vultr DNS Manager

J'ai suivi cette réponse sur la façon de configurer un CNAME pour rediriger vers non-www.

Type   | Name | Data         | Seconds
--------------------------------------
A      |      | ipv4 address | 300
AAAA   |      | ipv6 address | 300
CNAME  | .    | example.com  | 300
CNAME  | www  | example.com  | 300

Après avoir attendu toute la nuit pour propgate, le www peut toujours être visité et ne redirige pas.

Il ne me permet pas de faire un autre enregistrement A, seulement CNAME. Ça dit:

Unable to add record: A CNAME record is not allowed to coexist with any other data. 

[~ # ~] nginx [~ # ~]

J'ai suivi ce guide et j'ai essayé de le rediriger avec la configuration des sites disponibles. Http et Https fonctionnent, mais www ne redirige pas vers non-www.

server {
    # Redirect http to https
    listen 80;
    return 301 https://$Host$request_uri;
}

server {
    # Redirect www to non-www
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 443 ssl default_server;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cert_chain.crt;
    ssl_certificate_key /etc/nginx/ssl/example_com.key;
    ssl_protocols  TLSv1.1 TLSv1.2;

    server_name example.com;
    ...
11
Matt McManis

DNS ne peut pas rediriger votre site www vers un site non www. Le seul but du DNS est de pointer à la fois www et non www vers l'adresse IP de votre serveur en utilisant des enregistrements A, AAAA ou CNAME (cela fait peu de différence). La configuration nginx est chargée d'effectuer la redirection de www vers non-www.

Votre deuxième bloc serveur est destiné à rediriger de www vers non-www, mais ne gère actuellement que les connexions http (sur le port 80).

Vous pouvez déplacer le serveur par défaut et l'utiliser pour tout rediriger vers le nom de domaine prévu. Par exemple:

ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ...
}

En supposant que vous disposez d'un certificat commun pour les noms de domaine www et non www, vous pouvez déplacer le ssl_ directives dans le bloc externe et permettent leur héritage dans les deux blocs serveur (comme indiqué ci-dessus).

Voir ce document pour en savoir plus.

12
Richard Smith

Vous pouvez utiliser redirect.center et supprimer NGINX de l'équation.

Il est plus facile à configurer et simple, définissez votre enregistrement DNS sur:

CNAME  | www  | example.com.opts-uri.redirect.center

Juste ça.

2
Udlei Nati

Vous pouvez diriger www vers non-www en ajoutant un bloc serveur nouvea à votre fichier de configuration nginx.

Étape 1: ajoutez le bloc serveur suivant à votre fichier de configuration nginx.

server {
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

Étape 2: redémarrez nginx.

Sudo systemctl restart nginx
1
ffmaer