Le WWW :
- Tout d'abord, www.example.com est un authentique sous domaine de example.com, même s'il est, la plupart du temps définit par défaut avec les mêmes paramètres que le domaine principale.
Le problème qui se pose ici est que le domaine principal est lui aussi tout à fait fonctionnel, example.com et www.example.com renverront à la même page si rien n'est fait.
Votre référencement risque d'en pâtir, car ces deux URLs sont des duplicates de la même page, et pire, par défaut, toutes les URLs de votre site auront ce duplicate. Parce que les deux URLs, avec ou sans le www, marcheront. Le sou domaine www pointe sur le même host que le domaine.
Certain Bots testent des URL en retirant le www sans qu'il ait eût besoin de suivre un lien de cette sorte. Et des utilisateurs pourraient également poster de tels liens. Si vous ne faites rien à ce sujet, vous avez de bonnes chances de trouver des duplicates de vos pages dans les résultats des moteurs de recherches et de finalement vous retrouver avec un moins bon Page Rank (PR).
La solution est d'utiliser une redirection http 301 pour forcer l'utilisation d'une seule des deux possibilités.
Que choisir ?
- Internet est fait de standard, les Moteurs de Recherche et leur Bots les suivent, ou pour le moins sont construit en relation étroite avec ces standards. Le choix évident est ici de toujours conserver le www dans vos URLs.
Et cela ne concerne pas seulement ce qu'en feront les roBots, qui associent "forcement" le www à un domaine principale et non un sous domaine (et donc plus important ?).
Standards ? www.example.com vs example.com . Lequel des deux est le plus efficace selon vous ?
PhpBB n'est pas le seul script favorisant l'usage du www, pratiquement tous les formulaires capable de créer des liens automatiquement le feront en utilisant une Expression Régulière basé sur le www, pas de www, pas de lien actif automatique
Il faudrait écrire http://example.com , ce qui, vous en conviendrez, est moins susceptible de se produire.
Certains sites s'arrangent même pour conserver le www dans les URL de leurs sous domaines, mais cela peut rallonger les URLs, ce qui est aussi un paramètre important.
Les solutions :
- mod Rewrite Apache :
- Code: Tout sélectionner
RewriteEngine on- Code: Tout sélectionner
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]- Code: Tout sélectionner
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]- Code: Tout sélectionner
RewriteCond %{HTTP_HOST} !^(www|sub1|sub2|sub3)\.example\.com$ [NC]- Code: Tout sélectionner
$req_uri = $_SERVER['REQUEST_URI'];
$req_domain = $_SERVER['HTTP_HOST'];
$sub = substr( $domaine, 0, strpos($domaine,".") );
if ($sub != 'www')
{
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.example.com/$req_uri");
exit();
}
- Comme souvent pour gérer les URLs, le mod rewrite d'Apache est une solution parfaite.
L'idée est ici de s'assurer que le www est présent dans l'URL demandée, et de, si ce n'est pas le cas, la rediriger, en utilisant un header http 301, vers la même URL pourvue du www. LLes utilisateurs ne remarqueront pratiquement rien, la redirection se fait avant l'exécution de php, et les Bots "sauront" que cette dernière URL est la seule à prendre en compte.
Différentes approches sont possibles, et dépendent des spécificités de votre hébergement.
Tout d'abord, nous pouvons vérifier que le www est ou n'est pas présent en testant l'égalité avec www.example.com ou l'inégalité avec example.com.
Ensuite, comme le "." est un caractère spéciale pour le mod rewrite, nous devrions l'échapper avec un "\", mais j'ai observé des cas pour lesquels cela posait certains problèmes.
Ces différences dans la façon d'appréhender des rewriterules valables pour toutes les url d'un site, ré écrites ou pas, proviennent la plupart du temps des personnalisation d'Apache et du mod Rewrite réalisé par les hébergeur.
Au final, il est nécessaire de s'assurer que la redirection fonctionne dans tous les cas, et d'effectuer quelques tests si cela ne fonctionne pas directement.
Les RewriteCond et RewriteRule proposées doivent évidement être mise dans le .htaccess se trouvant à la racine de votre site, juste après :
Première méthode : URL = example.com.
Notez que si ces règles ne remplissent pas leur office sur votre serveur, vous pouvez essayer de retirer le "\", le $ et le [NC] dans la RewriteCond.
L'avantage de cette méthode est que vous ne risquez pas de bloquer l'accès à des sous domaines qui se trouveraient hébergés au même endroit.
Deuxième méthode : URL !=www.example.com.
La même remarque s'applique quant aux "\", $ et [NC] dans la RewriteCond.
Si pour quelques raisons cette variante serait la seul fonctionnelle pour votre site et que vous ayez des sous domaines pointant vers le même dossier, vous pouvez alors modifier la RewriteCond de cette façon :
Et conservez la RewriteRule telle qu'elle. Tous ce qui ne se trouverais pas dans la liste entre parenthèses sera alors redirigé, par http 301, vers www.example.com/uri_demandée
Redirection PHP :
- Pour ceux qui n'auraient pas la chance d'utiliser le serveur Apache avec le mod Rewrite actif, deux solutions :
1) Changez d'hébergement
2) Essayer ce qui suit
Attention, cela peut engendrer des erreurs si ce code n'est pas appliqué assez tôt dans le code de votre page. Le bon endroit pour cela pour phpBB devrait être le fichier common.php, juste avant le "?>".
Vous pouvez bien entendu appliquer ces principes pour ne pas utiliser le www dans l'URL de votre domaine, bien qu'il y ait beaucoup de chances que cela soit moins efficace pour le référencement de votre site.

Français |
Anglais
News

