Comment rediriger www vers non-www avec Nginx ?

Publié 27 août 2024

Configuration de Nginx pour rediriger www vers non-www

Les propriétaires de sites web utilisent souvent une seule version de leur domaine pour améliorer le référencement et l'expérience utilisateur. Il est courant de rediriger la version www d'un domaine vers la version non-www (ou vice versa). Pour les utilisateurs de Nginx, la mise en place de cette redirection nécessite une configuration spécifique. Cet article explique comment rediriger www vers non-www avec Nginx, vous aidant ainsi à maintenir une structure de domaine cohérente pour votre site web.

Configuration de Nginx pour la redirection www vers non-www

Création d'un bloc serveur pour la redirection

Pour configurer un bloc serveur pour la redirection www vers non-www :

  1. Créez un nouveau fichier de configuration :

    sudo nano /etc/nginx/sites-available/example.com
  2. Ajoutez ce bloc serveur :

    server {
       listen 80;
       server_name www.example.com example.com;
    
       # Autres configurations du serveur ici
    }
  3. Utilisez la directive server_name pour spécifier à la fois les versions www et non-www de votre domaine.

  4. Sauvegardez le fichier et quittez l'éditeur de texte.

  5. Créez un lien symbolique pour activer le site :

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  6. Supprimez la configuration Nginx par défaut :

    sudo rm /etc/nginx/sites-enabled/default

Cette configuration constitue la base pour mettre en place la redirection www vers non-www dans Nginx.

Mise en place de la redirection 301 dans Nginx

Écriture de la règle de redirection

Pour rediriger www vers non-www avec Nginx, utilisez la directive return avec un code de statut 301. Cela indique une redirection permanente. Ajoutez cette règle à votre bloc serveur :

server {
    listen 80;
    server_name www.example.com example.com;
    if ($host = www.example.com) {
        return 301 $scheme://example.com$request_uri;
    }
    # Autres configurations du bloc serveur
}

Cette règle vérifie si l'hôte demandé est la version www de votre domaine. Si c'est le cas, elle redirige vers la version non-www, en conservant le schéma d'origine (http ou https) et tous les paramètres de l'URL.

Test de la configuration Nginx

Après avoir écrit la règle de redirection, testez votre configuration Nginx pour détecter d'éventuelles erreurs :

  1. Exécutez cette commande :

    sudo nginx -t
  2. S'il n'y a pas d'erreurs, vous verrez un message indiquant que le test de configuration est réussi.

  3. S'il y a des erreurs, vérifiez votre fichier de configuration et corrigez les problèmes.

Une fois que le test de configuration est réussi, rechargez Nginx pour appliquer les changements :

sudo systemctl reload nginx

Cette commande recharge Nginx sans interrompre les connexions actives. Votre redirection www vers non-www devrait maintenant fonctionner. Testez-la en visitant votre domaine www dans un navigateur web pour confirmer qu'il redirige vers la version non-www.

Considérations supplémentaires pour la redirection

Gestion des connexions HTTPS

Pour gérer les connexions HTTPS, configurez les certificats SSL et mettez à jour votre bloc serveur Nginx :

  1. Obtenez un certificat SSL pour votre domaine.

  2. Installez le certificat SSL sur votre serveur.

  3. Mettez à jour votre bloc serveur Nginx pour prendre en charge HTTPS :

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com example.com;

    ssl_certificate /chemin/vers/votre/certificat.crt;
    ssl_certificate_key /chemin/vers/votre/cle.key;

    if ($host = www.example.com) {
        return 301 https://example.com$request_uri;
    }

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    # Autres configurations SSL et serveur
}

Cette configuration redirige le trafic HTTP et HTTPS de www vers non-www, et utilise HTTPS pour toutes les connexions.

Configuration DNS pour les domaines www et non-www

Pour configurer le DNS pour les domaines www et non-www :

  1. Créez un enregistrement A pour votre domaine non-www (example.com) pointant vers l'adresse IP de votre serveur.

  2. Configurez un enregistrement CNAME pour le sous-domaine www (www.example.com) pointant vers votre domaine non-www.

Exemple d'enregistrements DNS :

example.com.     A     123.45.67.89
www.example.com. CNAME example.com.

Après avoir effectué des modifications DNS, prévoyez un délai de propagation. Cela peut prendre jusqu'à 48 heures, mais se produit souvent en quelques heures. Utilisez des outils de recherche DNS en ligne pour vérifier l'état de propagation de votre domaine.

En gérant les connexions HTTPS et en configurant le DNS, vous créez un système de redirection sécurisé pour vos domaines www et non-www.

Résolution des problèmes courants de redirection

Gestion des boucles de redirection

Les boucles de redirection se produisent lorsque les redirections ramènent à l'URL d'origine, créant un cycle. Pour détecter et corriger les redirections circulaires :

  1. Utilisez des vérificateurs de redirection en ligne ou les outils de développement du navigateur pour repérer les boucles.

  2. Vérifiez vos fichiers de configuration Nginx pour détecter des règles de redirection conflictuelles.

  3. Recherchez des redirections dans votre système de gestion de contenu ou dans les fichiers .htaccess.

Pour trouver des problèmes de redirection dans les journaux du serveur :

  1. Accédez aux journaux d'erreurs Nginx :

    sudo tail -f /var/log/nginx/error.log
  2. Recherchez des entrées de redirection répétées ou des messages d'erreur.

  3. Utilisez des outils d'analyse de journaux pour identifier des modèles dans le comportement de redirection.

Optimisation de la redirection pour les moteurs de recherche

Pour aider les moteurs de recherche à comprendre vos redirections :

  1. Utilisez des redirections 301 (permanentes) pour www vers non-www. Vérifiez cela dans votre configuration Nginx :

    return 301 $scheme://example.com$request_uri;
  2. Mettez à jour votre sitemap XML :

    • Supprimez les URL www
    • Ajoutez les URL non-www
    • Soumettez le sitemap mis à jour aux moteurs de recherche
  3. Modifiez votre fichier robots.txt :

    • Utilisez la version non-www dans la directive Sitemap
    • Exemple :
      Sitemap: https://example.com/sitemap.xml
  4. Utilisez Google Search Console pour :

    • Définir votre version de domaine préférée
    • Vérifier les erreurs de crawl liées aux redirections

En corrigeant les boucles de redirection et en optimisant pour les moteurs de recherche, vous pouvez améliorer les performances de votre site web et sa visibilité dans les recherches.