Redirection automatique de l'index vers le répertoire "

Nouveau WRInaute
Bonjour,

Je souhaite que quand un visiteur tape l'adresse du site, il soit automatiquement redirigé vers le dossier "fr" correspondant au site en français. Donc la page index.html à la racine du site n'a pas d'utilité.

Comment faire cette redirection pour que les robots indexent bien le site ?
Avec htaccess (donc sans page index à la racine) ? Du genre :
Code:
Redirect permanent /  fr
ou alors
RewriteRule ^http://www.monsite.com$ /fr/ [R=301]

Avec une redirection php (contenu dans la page index) ? Du genre :
Code:
header("Status: 301 Moved Permanently", false, 301);
header("Location:  http://"  . $_SERVER["SERVER_NAME"] . "/fr/");

Quelles solutions en la meilleur en terme de référencement ?
Merci d'avance pour vos conseils.
 
WRInaute accro
entre un 301 php et un 301 htaccess, il n'y a pas de différence. le tout est de faire une 301 via un rewrite, un redirect, un script, ... ce que tu veux
 
WRInaute passionné
e-kiwi a dit:
entre un 301 php et un 301 htaccess, il n'y a pas de différence. le tout est de faire une 301 via un rewrite, un redirect, un script, ... ce que tu veux
il y a peut-être une petite différence dans le temps de traitement si la redirection est en php
 
Nouveau WRInaute
matsa a dit:
Le traitement serait plus rapide via htaccess ?
De ce que j'ai compris (arretez moi si je me trompe), lorsqu'une URL est demandée, le serveur apache va toujours voir en premier si un fichier .htaccess est présent dans le repertoire.
Si ta redirection est dans le .htaccess, il aura recherché le .htaccess, lu le .htaccess, et été redirigé.
Si ta redirection est dans le .php, il aura recherché le .htaccess, (eventuellement lu le .htaccess si tu as d'autres trucs dedans autres que la redirection), recherché le index.php, lu le index.php et été redirigé.
J'aurais donc tendance a dire que de mettre la redirection dans le .htaccess est legerement plus rapide, mais ca doit se jouer a tres tres peu. :D


Sinon, pour reprendre la question de départ de matsa, je voudrais savoir justement comment on ecrit cette fameuse ligne dans le .htaccess, pour lui dire que les gens qui ont saisi dans leur navigateur l'adresse du site sont redirigés vers le repertoire /fr?
J'ai essayé les differentes lignes ci-dessous mais sans succès :
RewriteRule ^http://www.monsite.com$ /fr/ [R=301]
RewriteRule ^http://www.monsite.com$ http://www.monsite.com/fr/ [R=301]
RewriteRule ^/$ http://www.monsite.com/fr/ [R=301]

Finalement j'ai trouvé une methode qui marche, en mettant :
DirectoryIndex /fr/index.html

Mais je me demande si c'est la meilleure methode que tout le monde utilise, et si ca n'a pas d'impact que je ne soupconnerai pas, comme le referencement ou autre... par rapport a un RewriteRule 301 qui est invisible pour le referencement...
 
WRInaute passionné
c'est plutôt :
Code:
RewriteRule ^$ http://www.monsite.com/fr/ [R=301]

si tu as plusieurs répertoires la solution avec DirectoryIndex va poser des problèmes car tu ne pourras pas utiliser le fichier index d'un autre répertoire.
 
Nouveau WRInaute
Super, merci, ca marche nikel et effectivement je n'avais pas pensé à ce probleme avec la méthode du DirectoryIndex.

Au passage : j'ai mis [R=301,L] sur chacune de mes regles, dont celle la.
Le "L" est il un probleme pour cette regle la? Je n'ai pas bien compris comment fonctionne le flag L en fait... :oops:
 
Nouveau WRInaute
Oui j'ai compris son sens (que j'avais lu dans la doc apache), mais en fait je ne vois aucun exemple ou on devrait ne pas le mettre. Je suppose que Apache lis les regles les unes apres les autres jusqu'a ce qu'il tombe sur la ligne correspondant à la requete que la personne a faite. A ce moment, il est redirigé et donc arrete de lire le fichier .htaccess. Je ne vois pas de cas ou il serait redirigé et devrait continuer a lire les regles de redirection suivante. Mais il doit exister des regles plus complexes, tenant en plusieurs lignes, que je n'imagine pas... :?:
 
Discussions similaires
Haut