Aller au contenu

.htaccess, redirections 301, sous-domaines...


Sujets conseillés

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 On

RewriteCond %{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?

Lien vers le commentaire
Partager sur d’autres sites

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 On

RewriteCond %{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

Lien vers le commentaire
Partager sur d’autres sites

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 On

RewriteCond %{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?

Lien vers le commentaire
Partager sur d’autres sites

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.html

RewriteEngine On

RewriteCond %{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é par Vap
Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...