Rediriger des pages avec un htaccess

Eléphant du PHP | 117 Messages

27 avr. 2009, 11:16

Bonjour à tous,

Je suis un peu embetté depuis quelques temps déjà je n'arrive pas à rediriger correctement certaines de mes pages pour qu'il y ait un index commun et donc pas de duplicate.

En fait j'ai plusieurs accès possible vers ma page d'accueil :
http://www.monsite.fr/
http://www.monsite.fr/mot-cle/
http://www.monsite.fr/mot-cle/index.php
http://monsite.fr/mot-cle/
http://monsite.fr/mot-cle/index.php

Donc je voudrais que tous ces liens pointent vers http://www.monsite.fr/mot-cle/index.php

Donc voici ce que j'ai mis dans mon fichier htaccess :
RewriteCond %{HTTP_HOST} !^www.monsite.fr$
RewriteCond %{HTTP_HOST} !^www.monsite.fr/mot-cle/$
RewriteCond %{HTTP_HOST} !^monsite.fr$
RewriteCond %{HTTP_HOST} !^monsite.fr/mot-cle$
RewriteCond %{HTTP_HOST} !^monsite.fr/mot-cle/index.php$
RewriteRule ^(.*) http://www.monsite.fr/mot-cle/index.php$1 [QSA,L,R=301]

Mais ça ne fonctionne pas, j'ai dû rater une étape.

Merci d'avance pour votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2009, 18:47

Hmm... de mémoire la variable %{HTTP_HOST} ne contient que le domaine... pas les sous dossiers ou les fichiers...

Et y a un truc qui m'échappe dans le sens de tes conditions par rapport à ta demande... la logique aurait voulu qu'il n'y ait pas de "!" et des [or], parce que là, tu ne passe en 301 que les url qui sont différentes de celles spécifiées...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 117 Messages

27 avr. 2009, 22:49

Merci pour ta réponse.

Donc ça devrait ressembler à quoi alors car j'ai beau tester pas mal de codes différents mais sans succès, le dernier que j'ai testé c'est ce code ci :

RewriteCond %{HTTP_HOST} ^www.monsite.fr/mot-cle/index.php$
RewriteCond %{HTTP_HOST} ^www.monsite.fr/mot-cle/$
RewriteCond %{HTTP_HOST} ^www.monsite.fr/$
RewriteCond %{HTTP_HOST} ^www.monsite.fr/index.php$
RewriteCond %{HTTP_HOST} ^monsite.fr/mot-cle/index.php$
RewriteCond %{HTTP_HOST} ^monsite.fr/mot-cle/$
RewriteCond %{HTTP_HOST} ^monsite.fr/$
RewriteCond %{HTTP_HOST} ^monsite.fr/index.php$
RewriteRule ^(.*) http://www.monsite.fr/mot-cle/index.php$1 [QSA,L,R=301]

merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2009, 23:30

Je suis pas expert en htaccess, mais je dirais qu'il y a deux étapes dans ce que tu veux faire... gerer les www dans le nom de domaine

Code : Tout sélectionner

rewritecond %{HTTP_HOST} ^monsite.fr [NC] rewriterule ^(.*)$ http://www.monsite.fr/$1 [R=301,NC]
et ensuite les règles de réécriture de l'url

Code : Tout sélectionner

RewriteRule ^mot-cle/?$ mot-cle/index.php [L]
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...