SEO – redirection url sans www

www or not www

Lors de la création de votre site internet, l’une des questions clés à se poser est le choix du nom de domaine. Choisissons par exemple webdevpro.net.
Suite à l’installation du site sur le serveur, le site internet est accessible via l’url http://webdevpro.net mais aussi http://www.webdevpro.net .
Le fait que votre site soit accessible avec et sans www n’est pas une bonne chose en terme de référencement naturel.

Les moteur de recherche (Google, Yahoo, Yandex …) vont considérer que l’intégralité de votre site est dupliqué deux fois : sur l’adresse avec www et sans www aussi appelé duplicate content en SEO.

Ce n’est pas bon en terme de PageRank dans la page de résultat des Moteurs de Recherche aussi appelé SERP.

Il existe plusieurs solutions pour éviter le duplicate content :

  1. ajout de la balise canonical dans l’en tête de vos pages
  2. redirection via .htaccess
  3. redirection via PHP
  4. le cas ERR_NAME_NOT_RESOLVED

balise canonical

Une première solution simple à mettre en oeuvre est d’ajouter dans tous les en tête <head></head> de vos pages la balise suivante :

<link rel="canonical" href="http://news.webdevpro.net"/>

Elle donne une indication aux bots d’indexation que la page officielle est celle sans www et que la page avec n’est pas à indexer.

redirection via .htaccess

Autre solution, l’ajout d’un fichier .htaccess qui va réaliser la redirection avant d’atteindre les pages de votre site. Toutes requêtes avec www sera redirigées l’adresse sans :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.news.webdevpro.net$ [NC]
RewriteRule (.*) http://news.webdevpro.net/$1 [R=301,L] 

redirection via PHP

Dernière solution, réaliser la redirection via un fichier PHP de type front controller :

<?php 
   $newURL = 'http://news.webdevpro.net';
   header('Status: 301 Moved Permanently', false, 301); 
   header('Location: '.$newURL); 
   exit();
?>

En plus de ce fichier, il est possible de créer des fichiers index.php dans tous les dossiers contenant le code suivant qui redirigera vers le front controller :

<?php
// source prestashop
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;
?>

ERR_NAME_NOT_RESOLVED

Dernier cas de figure, vous essayer d’accéder à votre site avec www et votre navigateur envoie un message d’erreur ERR_NAME_NOT_RESOLVED qui signifie de l’adresse saisie n’existe pas ??? en tout cas qu’elle n’est trouvable (ou résolu) sur internet …

Il y a de forte chance qu’il manque une Directive au niveau de votre serveur DNS de type CNAME :

www.news.webdevpro.net CNAME news.webdevpro.net.

Ce type de manipulation est à réaliser auprès de votre hébergeur dans la console d’administration ou dans le menu dédié à la gestion des DNS sur votre serveur dédié