philippe-h Posté 26 Janvier 2008 Posté 26 Janvier 2008 bonjour, je suis nouveau ici (en tant qu'inscrit du moins car ça fait longtemps que je vous lis). on peut dire que je suis aussi "nouveau" sur le web, comme beaucoup j'ai suivi le parcours suivant: blog > hébergement FAI > vrai hébergement (OVH) + NDD. donc me voilà avec mon hébergement (mutualisé) et mon NDD tout neuf (90PLAN). mais j'aimerais vraiment faire les choses proprement, et les unes après les autres, sans me précipiter surtout. donc je me tourne vers vous pour ma première question; assez "initié" en termes de référencement, je sais que le contenu dupliqué (duplicate content) est à éviter. après avoir mis un fichier robots.txt, il faut donc maintenant que je m'occupe du fichier .htaccess. et là, c'est quand même le grand flou, on trouve toutes sortes de syntaxes différentes. voici ce que je voudrais faire: 1. rediriger -http://monsite.fr vers -http://www.monsite.fr/, mais sachant que j'aimerais me réserver la possibilité d'utiliser des sous-domaines (-http://sousdomaine.monsite.fr/) 2. rediriger -http://www.monsite.fr/index.html vers -http://www.monsite.fr/ voilà ce que j'ai trouvé, comme code, mais je m'étonne des différents types de syntaxe que l'on peut trouver ici et là, et je ne sais pas ce que signifient [NC] ou encore [QSA], et pourquoi dans un cas on utilise l'un ou l'autre? le [NC] à la fin de la 2ème ligne est-il indispensable? RewriteEngine OnRewriteCond %{HTTP_HOST} ^monsite\.fr [NC]RewriteRule ^(.*)$ http://www.monsite.fr/$1 [QSA,R=301,L]RewriteRule ^index.html$ http://www.monsite.fr/ [NC,L,R=301] voilà, ça fait long comme premier message hein... si quelqu'un pouvait me corriger ça?
Vap Posté 26 Janvier 2008 Posté 26 Janvier 2008 Il y a deux règles de réécriture. La première règle est formée des deux lignes du milieu. La deuxième règle est formée de la dernière ligne. NC veut dire "non sensible à la casse". Les majuscules sont traitées comme des minuscules. La deuxième ligne est une condition. Elle teste si l'adresse est http://monsite.fr/nom-de-page . ELle ne se déclenche pas si l'adresse est sous-domain.monsite.fr/nom-de-page. Si c'est le cas, l'adresse est transformée en http://www.monsite.fr/nom-de-page par la troisième ligne. Le QSA veut sire "query string append". C'est pour le cas ou tes URL ont des paramètres (valeurs après un point d'interrogation), par exemple http://monsite.fr/index.php?id=2 Sans le QSA, la règle réécrit cette URL en http://www.monsite.fr/index.php, et le paramètre id est perdu. Le R=301 dit que la redirection est permanente et visible par le visiteur. Le L veut dire que si cette règle s'applique, ce n'est pas la peine d'activer les autres règles. Il faut en fait l'enlever dans ton cas, car la dernière règle doit s'appliquer si possible. Cette dernière règle réécrit une adresse de la forme http://www.monsite/index.html en http://www.monsite.fr Pourquoi faut il enlever le L de la première règle? Si l'URL de départ est http://monsite.fr/index.html la première règle réécrit en http://www.monsite.fr/index.html Si non s'arrête là, on reste avec une URL dont on ne veut pas. Il faut appliquer la deuxième règle. La deuxième règle récrit en http://www.monsite.fr Là on est content. Bref, le code correct est: RewriteEngine OnRewriteCond %{HTTP_HOST} ^monsite\.fr [NC]RewriteRule ^(.*)$ http://www.monsite.fr/$1 [QSA,R=301]RewriteRule ^index.html$ http://www.monsite.fr/ [NC,L,R=301] Pour en savoir plus sur lezs règles de réécriture : http://www.webmaster-hub.com/publication/M...riture-des.html
philippe-h Posté 27 Janvier 2008 Auteur Posté 27 Janvier 2008 bonsoir, merci pour votre réponse. j'ai essayé votre code mais ça ne fonctionne pas, le navigateur (Mozilla) me renvoie un message d'erreur "la redirection n'est pas possible". pour le moment j'ai donc mis ça: RewriteEngine OnRewriteCond %{HTTP_HOST} ^monsite\.fr [NC]RewriteRule ^(.*)$ http://www.monsite.fr/$1 [QSA,R=301,L] mais j'ai donc, du coup, toujours un pb de duplicate entre ndd/ et ndd/index.html je ne trouve pas où était le pb dans le code que vous m'avez fourni, si vous pouviez jeter un oeil à nouveau?
Vap Posté 27 Janvier 2008 Posté 27 Janvier 2008 (modifié) C'est ma faute, désolé. index.html est redirigé vers la racine, qui est redirigée vers index.html par defaut. On a donc une boucle. Pour s'en sortir il faut utiliser un nouveau nom pour la page d'accueil, par exemple en renommant index.html en info.html. Ensuite, on met dans son htaccess ce qui suit: DirectoryIndex info.htmlRewriteEngine OnRewriteCond %{HTTP_HOST} ^monsite\.fr [NC]RewriteRule ^(.*)$ http://www.monsite.fr/$1 [QSA,R=301]RewriteRule ^index.html$ http://www.monsite.fr/ [NC,L,R=301] Là ça devrait marcher (j'ai testé chez moi). Vap Modifié 27 Janvier 2008 par Vap
philippe-h Posté 1 Février 2008 Auteur Posté 1 Février 2008 merci Vap, je n'ai pas encore essayé le nouveau code, mais ça ne saurait tarder. par contre, je viens de créer un sous-domaine, et ce dernier est accessible via 2 urls: -http://sous.domaine.fr -http://www.sous.domaine.fr que dois-je ajouter pour éviter ce duplicate? sûrement un htaccess dans le répertoire correspondant au sous domaine, mais je mets quoi dedans?
Vap Posté 2 Février 2008 Posté 2 Février 2008 Bonsoir Philippe, c'est le même principe que pour le domaine principal. Ici j'enlève le www : RewriteCond %{HTTP_HOST} ^www\.sous\.domaine\.fr [NC]RewriteRule ^(.*)$ http://sous.domaine.fr/$1 [QSA,R=301] Si tu veux garder le www devant le sous domaine, il faut mettre ça : RewriteCond %{HTTP_HOST} ^sous\.domaine\.fr [NC]RewriteRule ^(.*)$ http://www.sous.domaine.fr/$1 [QSA,R=301]
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant