Redirection pour eviter des doublons

pclorraine

Nouveau WRInaute
Bonjour à tous.

Je cherche une solution pour eviter que mes pages soient en double.

J'ai fait ceci:
RewriteRule ^news.html$ /modules/news/ [L]

Donc maintenant je peux aller sur example.com/news.html mais aussi sur example.com/modules/news/ ces deux url seront identiques.

Comment faire pour que lorsque je tombe sur /modules/news/ je soit automatiquement redirigé vers news.html

Merci par avance.

Bonne journée à tous.
 

pclorraine

Nouveau WRInaute
Bonjour,

J'ai essayé ça marche. Lorsque je tape /modules/news/ je tombe sur news.html mais malheureusement c'est une page avec ceci:

Redirection de page incorrecte

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.

* La cause de ce problème peut être la désactivation ou le refus des cookies.


Voici ce que j'ai ajouté dans mon htaccess
Code:
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$		/modules/news/                                    [L]
 

webmasterlamogere

WRInaute passionné
si ca boucle, il faut ajouter un petit test et un paramètre bidon :
Code:
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$      /modules/news/?stop                                    [L]
 

pclorraine

Nouveau WRInaute
Merci beaucoup webmasterlamogere,

Ca fonctionne très bien pour /modules/news/

J'ai essayé de faire pareil avec un nouveau lien mais ça ne fonctionne pas je peux aller sur livre-dor.html et modules/xfguestbook/

Code:
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$      /modules/news/?stop                                    [L]
RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]

J'ai oublié quelque chose?

Encore merci de m'aider
 

webmasterlamogere

WRInaute passionné
oui, Les "RewriteCond" ne s'appliquent qu'a la "RewriteRule" qui suit. Il faut donc ajouter la condition :
Code:
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$      /modules/news/?stop                                    [L]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
 

pclorraine

Nouveau WRInaute
Bonsoir,

Je viens d'essayer et c'est bizzare pour modules/news/ ça fonctionne très bien mais pas pour /modules/xfguestbook/ ,je peux aller sur les deux urls.

Bizzare non?
 

Vap

WRInaute impliqué
Peux tu mettre tout ton .htaccess?

Sinon, as tu un autre .htaccess dans /modules/ ou dans /modules/xfguestbook/?

Enfin, tantot tu utilise des url /modules/... tantot modules/... (sans / en premier). Est-ce fait exprès?
 

pclorraine

Nouveau WRInaute
Bonsoir,

Voici mon htaccess:
Code:
    # Lines That should already be in your .htacess
    <Files "config.php">
    Order Allow,Deny
    Deny from All
    </Files>
    <Files "common.php">
    Order Allow,Deny
    Deny from All
    </Files>

    # Options +FollowSymlinks
    # REMEBER YOU ONLY NEED TO STARD MOD REWRITE ONCE
    RewriteEngine On
    # REWRITE BASE
    RewriteBase /
    # HERE IS A GOOD PLACE TO ADD THE WWW PREFIXE REDIRECTION

###########
#URL REWRITE DU SITE
###########

###Les news
RewriteRule ^.*hydroponie-([0-9]*)-[^/]+.html /modules/news/article.php?storyid=$1 [L]
RewriteRule ^.*hydroponie([0-9]*)-[^/]+.html /modules/news/index.php?storytopic=$1 [L]  



###REECRITURE SITE
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$      /modules/news/?stop                                    [L]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]

####################################################
    # PHPBB SEO REWRITE RULES - ADVANCED
    #####################################################
    # AUTHOR : dcz www.phpbb-seo.com
    # STARTED : 01/2006
    #################################
    # FORUMS PAGES
    ###############
    # FORUM INDEX
    RewriteRule ^forum\.html$ forum/index.php [QSA,L,NC]
    # FORUM
    RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(page([0-9]+)\.html)?$ forum/viewforum.php?f=$1&start=$3 [QSA,L,NC]
    # TOPIC WITH VIRTUAL FOLDER
    RewriteRule ^[a-z0-9_-]*-f([0-9]+)/[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?f=$1&t=$2&start=$4 [QSA,L,NC]
    # GLOBAL ANNOUNCES WITH VIRTUAL FOLDER
    RewriteRule ^annonces/[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?t=$1&start=$3 [QSA,L,NC]
    # TOPIC WITHOUT FORUM ID & DELIM
    RewriteRule ^[a-z0-9_-]*/?[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?t=$1&start=$3 [QSA,L,NC]
    # PROFILES THROUGH USERNAME
    RewriteRule ^membre/([^/]+)/?$ forum/memberlist.php?mode=viewprofile&un=$1 [QSA,L,NC]
    # USER MESSAGES THROUGH USERNAME
    RewriteRule ^messages/([^/]+)/?(page([0-9]+)\.html)?$ forum/search.php?author=$1&sr=posts&start=$3 [QSA,L,NC]
    # GROUPS ADVANCED
    RewriteRule ^[a-z0-9_-]*-g([0-9]+)(-([0-9]+))?\.html$ forum/memberlist.php?mode=group&g=$1&start=$3 [QSA,L,NC]
    # POST
    RewriteRule ^post([0-9]+)\.html$ forum/viewtopic.php?p=$1 [QSA,L,NC]
    # THE TEAM
    RewriteRule ^equipe\.html$ forum/memberlist.php?mode=leaders [QSA,L,NC]
    # HERE IS A GOOD PLACE TO ADD OTHER PHPBB RELATED REWRITERULES

    # FORUM WITHOUT ID & DELIM
    # THESE FOUR LINES MUST BE LOCATED AT THE END OF YOUR HTACCESS TO WORK PROPERLY
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^[a-z0-9_-]+/?(page([0-9]+)\.html)?$ forum/viewforum.php?start=$2 [QSA,L,NC]
    # END PHPBB PAGES
    #####################################################

Sinon, as tu un autre .htaccess dans /modules/ ou dans /modules/xfguestbook/?
Non je viens de vérifier il n'y a rien.

Enfin, tantot tu utilise des url /modules/... tantot modules/... (sans / en premier). Est-ce fait exprès?
Je sais pas, ça fonctionne comme ça. Modules/news fonctionne bien mais pas modules/xfguestbook/

Bonne soirée à tous.
 

pclorraine

Nouveau WRInaute
Bonjour à tous,

Je n'arrive toujours pas :-(

Avec ceci:
Code:
###REECRITURE SITE
RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
RewriteRule ^news.html$      /modules/news/?stop                                    [L]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
RewriteCond %{QUERY_STRING} !stop
RewriteRule ^modules/nous-contacter/$      /nous-contacter.html                                    [R=301,QSA,L]
RewriteRule ^nous-contacter.html$      /modules/nous-contacter/?stop                                    [L]

Le premier fonctionne mais pas les deux autres. Comment faire?

Merci par avance.
Bonne journée
 

webmasterlamogere

WRInaute passionné
ca doit forcément marcher. j'ai même testé en local avec wamp et ca marche.
il doit y avoir un conflit avec une règle de PHPBB. tu peux peut-être faire un test en les supprimant toutes et en les remettant une par une pour voir celle qui pose problème.
 

pclorraine

Nouveau WRInaute
Merci beaucoup oui ça fonctionne sans phpbb je vais trouver le problème.

Et donc là c'est pour une répertoire mais comment faire pour une page, par exemple:

Je souhaiterais transformer ça -> /modules/edito/content.php?id=1 en ceci: /page-sur-les-bateaux.html

Merci par avance.
 

webmasterlamogere

WRInaute passionné
pclorraine a dit:
Et donc là c'est pour une répertoire mais comment faire pour une page, par exemple:

Je souhaiterais transformer ça -> /modules/edito/content.php?id=1 en ceci: /page-sur-les-bateaux.html

Merci par avance.
avec ca :
Code:
RewriteCond %{QUERY_STRING} ^id=1$
RewriteRule ^modules/edito/content\.php$ /page-sur-les-bateaux.html? [R=301,L]
RewriteRule ^page-sur-les-bateaux\.html$      /modules/edito/content.php?id=1&stop                                    [L]
 

Vap

WRInaute impliqué
Suffit de demander :wink:

Code:
RewriteCond %{QUERY_STRING} ^id=1$
RewriteRule ^modules/edito/content\.php /page-sur-les-bateaux.html [R=301,L]

Edit: grillé.
 

poupilou

WRInaute impliqué
Salut,

Un peu d'aide serait le bien venu :p

J'essaie de rewritter mes anciennes url et de faire une redirection des anciennes url vers les nouvelles via un htaccess mais j'ai quelques difficultés, ça marche pas :

Mes anciennes url sont du type :
http://www.mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=25

Mes nouvelles url sont du type :
http://www.mon-site.com/repertoire/ma-rubrique-25.html

Je souhaiterai établir une règle qui me permette de ré-écrire mes url et une autre qui redirige mes anciennes url vers les nouvelles afin d'éviter le duplicate content, comment faire cela ?

J'ai essayé ça mais ça marche pas :
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=$
RewriteRule ^repertoire/index.php?rub=ma_rubrique&module=liste&ref=(.*)$ /mon-site.com/repertoire/ma-rubrique-$1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

Voyez-vous une ou des erreur(s) ?

Merci pour vos réponses.
 

Vap

WRInaute impliqué
Il y a une erreur sur ta condition. Tu termine la chaine avec le =, alors qu'il y a encore le numéro de rubrique.

Essaie ça:

Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

Si la premiere regle ne arche pas parce que la QUERY_STRING est rajoutée, remplace la par:


Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
 

poupilou

WRInaute impliqué
Merci Vap pour ta réponse mais ça ne marche pas :oops:

Je ne vois pas de différence entre 2 tes propositions, est-ce normal ?

Est-ce que tu confirmes qu'il faut bien mettre -%1.html et pas -$1.html à la fin de la deuxième ligne de ton code ?
 

Vap

WRInaute impliqué
poupilou a dit:
Merci Vap pour ta réponse mais ça ne marche pas :oops:
[/quote ]
Qu'est ce qui ne marche pas?


poupilou a dit:
Je ne vois pas de différence entre 2 tes propositions, est-ce normal ?

Il y a un ? a la fin de la premiere règle dans ma deuxième proposition. C'est pour éviter qu'il rajoute la query string (ce qu'il y avait apres le ? dans l'url originale)

poupilou a dit:
Est-ce que tu confirmes qu'il faut bien mettre -%1.html et pas -$1.html à la fin de la deuxième ligne de ton code ?

Oui. Car on récupère la chaine de caratère qui est entre parenthese dans la condition.

Je testerai a mon retour chez moi.
 

poupilou

WRInaute impliqué
Vap en fait lorsque j'utilise ce code :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L] 
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
ou avec le point d'interrogation à la fin de la deuxième lignes :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L] 
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
ni mes anciennes, ni mes nouvelles url fonctionnent ça me renvoie une erreur 404.

Si j'utilise ce code :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
RewriteRule ^repertoire/index\.php?rub=ma_rubrique&module=liste&ref=(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L] 
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
mes anciennes url fonctionnent mais pas les nouvelles ! Même chose si je remplace le %1 par $1

J'ai essayé aussi de remplacer le %{QUERY_STRING} par %{REQUEST_URI} mais ça change rien :cry:
 

webmasterlamogere

WRInaute passionné
il n'est pas possible de mettre des paramètres dans la partie gauche des RewriteRule. Il faut mettre &stop sinon il y a deux ?
avec ca :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
 

poupilou

WRInaute impliqué
Merci pour ta réponse webmasterlamogere mais ça ne marche pas non plus, Internet Explorer m'affiche une page d'erreur avec le message suivant "Internet Explorer ne peut pas afficher cette page web" et j'ai essayé avec les anciennes commes les nouvelles url :cry:

Il me reste la possibilité de mettre ce bout de code dans mon code html du style :
Code:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.mon-site.com/repertoire/ma-rubrique-12.html");
 exit;
Mais bon si je pouvais faire cela dans le htaccess ce serait quand même mieux !
 

webmasterlamogere

WRInaute passionné
c'est peut-être avec ca :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
 

webmasterlamogere

WRInaute passionné
il ne faut pas oublier "RewriteEngine on" en premier :
Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
 

poupilou

WRInaute impliqué
Le "RewriteEngine on" est bien mis dans mon htaccess.

Dans ton dernier code tu as enlevé le /mon-site.com si tu enlèves ça en local ça ne peut pas marcher, non ? De toute manière, j'ai essayé avec et sans /mon-site.com mais ça change rien, même résultat, toujours la page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:
 

webmasterlamogere

WRInaute passionné
poupilou a dit:
Le "RewriteEngine on" est bien mis dans mon htaccess.

Dans ton dernier code tu as enlevé le /mon-site.com si tu enlèves ça en local ça ne peut pas marcher, non ? De toute manière, j'ai essayé avec et sans /mon-site.com mais ça change rien, même résultat, toujours la page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:
si le chemin est h**p://localhost/mon-site.com/repertoire/index.php?... il faut bien mettre le chemin complet : /mon-site.com/repertoire/index.php
le fichier .htacess doit être dans le répertoire /mon-site.com
 

webmasterlamogere

WRInaute passionné
en effet, je viens de tester chez moi et la solution est d'ajouter un ? pour éviter de transmettre les paramètres et de déplacer le stop pour qu'il ne soit pas pris avec le paramètre ref :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&stop&ref=$1 [L]
 

poupilou

WRInaute impliqué
Chapeau bas maître webmasterlamogere ça marche impeccable :lol:

Merci pour ton aide.

Une autre petite question : je souhaite faire une redirection d'une ancienne url vers une nouvelle url mais qui n'est pas dans le même répertoire, autrement dit :
Ancienne url :
Code:
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique
Nouvelle destination pour cette page :
Code:
h**p://www.mon-site.com/repertoire2/nouvelle-rubrique.html
Est-ce possible ?
 

Vap

WRInaute impliqué
Webmasterlamogere a raison, il y avait deux ? dans mes règles, ce qui ne marche pas.

Ce qui suit marche chez moi :

Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=([0-9]+)$
RewriteRule ^index\.php(.*)$ /ma-rubrique-%1.html? [R=301,L]
RewriteRule ^ma-rubrique-(.*).html$ /index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]

dans un .htaccess situé dans mon-site.com/repertoire/

J'ai changé la fin de la condition, sinon ça parse le &stop additionnel, et ça boucle.

Si tu veux un .htaccess a la racine de ton site, ce qui suit devrait marcher :

Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=([0-9]+)$
RewriteRule ^repertoire/index\.php(.*)$ /repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]

Je te conseille plutot un .htaccess par repertoire, ce sera plus efficace car le serveur n'a pas a parser toutes les règles. Il parse seulement les règles du repertoire courant. En plus les regles sont plus simples.

Edit: encore grillé!
 

Vap

WRInaute impliqué
poupilou a dit:
je souhaite faire une redirection d'une ancienne url vers une nouvelle url mais qui n'est pas dans le même répertoire, autrement dit :
Ancienne url :
Code:
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique
Nouvelle destination pour cette page :
Code:
h**p://www.mon-site.com/repertoire2/nouvelle-rubrique.html
Est-ce possible ?
Ca marche pareil:

Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique$
RewriteRule ^repertoire/index\.php(.*)$ /repertoire2/nouvelle-rubrique.html? [R=301,L]
RewriteRule ^repertoire2/nouvelle-rubrique.html$ /repertoire/index.php?rub=ma_rubrique&stop [L]
 

poupilou

WRInaute impliqué
Merci Vap pour ta réponse, ça marche parfaitement bien :lol:

Encore une petite question : est-il possible d'ajouter des règles en php dans un htaccess, par exemple des "ereg" ou "ereg_replace" ? Si oui pouvez-vous donner une petit exemple avec un "ereg_replace" ?

Par exemple j'ai parfois des pages avec une variable "page" qui est à "0" ce qui fait un duplicate content, par exemple :
Code:
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique
et
Code:
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique&page=0
C'est la même page, je souhaiterai donc écrire une règle dans le htaccess qui dises que dès qu'il aura un "&page=0" dans l'url du browser on redirige vers cette même url mais sans le "&page=0" (avec un ereg_replace par exemple), comment faire cela ?
 

Vap

WRInaute impliqué
On ne peut pas utiser de PHP dans un .htaccess, sauf a faire appel a un programme externe.

Mais on peut faire ce que tu veux je crois:

Code:
RewriteCond %{QUERY_STRING} ^(.*)&page=0$
RewriteRule ^repertoire/index\.php(.*)$ /repertoire/index.php?%1 [R=301]

Cette règle enleve le le page=0. Il faut la mettre avant les autres, car on veut pouvori réecrire l'URL résultat. C'est pour cela qu'il n'y a pas de flag L a la fin.
 

webmasterlamogere

WRInaute passionné
c'est le même principe :
Code:
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique$
RewriteRule ^repertoire/index\.php$ /repertoire2/nouvelle-rubrique.html? [R=301,L]
 

poupilou

WRInaute impliqué
Merci pour vos réponses.

1) Faut-il mieux mettre un htaccess dans chaque répertoire ou un seul à la racine du site ?

2) Si je met un htaccess dans chaque répertoire et un autre à la racine du site, est-ce le fait d'avoir une règle dans cet htaccess à la racine du site fera que cette règle s'appliquera à tout mon site (incluant tous les répertoires) ou bien est-ce que la fait d'avoir un htaccess dans chaque répertoire annule les règles qui sont mises dans les htaccess à la racine du site ?

3) La structure des règles des htaccess dans les répertoires sont-elle les mêmes que pour le htaccess à la racine du site ? Autrement dit si j'ai cette règle dans un htacess à la racine du site :
Code:
RewriteCond %{QUERY_STRING} ^(.*)&page=0$ 
RewriteRule ^repertoire/index\.php(.*)$ /repertoire/index.php?%1 [R=301]
est-ce qu'il faut mettre la même règle dans un htaccess dans le répertoire /repertoire/ ?
 

Vap

WRInaute impliqué
poupilou a dit:
Merci pour vos réponses.

1) Faut-il mieux mettre un htaccess dans chaque répertoire ou un seul à la racine du site ?
C'est plus simple d'en avoir un a la racine.

poupilou a dit:
2) Si je met un htaccess dans chaque répertoire et un autre à la racine du site, est-ce le fait d'avoir une règle dans cet htaccess à la racine du site fera que cette règle s'appliquera à tout mon site (incluant tous les répertoires) ou bien est-ce que la fait d'avoir un htaccess dans chaque répertoire annule les règles qui sont mises dans les htaccess à la racine du site ?
Il faut ajouter
Code:
RewriteOptions inherit
dans les .htaccess des sous répertoires, sinon les regles du .htaccess de la racine seront ignorées.

poupilou a dit:
3) La structure des règles des htaccess dans les répertoires sont-elle les mêmes que pour le htaccess à la racine du site ? Autrement dit si j'ai cette règle dans un htacess à la racine du site :
Code:
RewriteCond %{QUERY_STRING} ^(.*)&page=0$ 
RewriteRule ^repertoire/index\.php(.*)$ /repertoire/index.php?%1 [R=301]
est-ce qu'il faut mettre la même règle dans un htaccess dans le répertoire /repertoire/ ?

Non. L'interet d'avoir un .htaccess dans chaque réperoire est d'écrire la règle là ou elle est utile, pas à la racine.

La règle que tu donne peut etre remplacée par la règle suivante dans un .htaccess dans le répertoire /repertoire/ :
Code:
RewriteCond %{QUERY_STRING} ^(.*)&page=0$ 
RewriteRule ^index\.php(.*)$ index.php?%1 [R=301]

Dans ce cas, tu enlève la règle du .htaccess de la racine.

Ce que je te conseille: tu fais d'abors un seul .htaccess a la racine.

Puis, quand ça marche bien, pour optimiser, tu transfère petit a petit les règles vers les .htaccess des repertoires. Et tu n'oublie pas l'option ci dessus!

Mais ce n'est pas du tout obligatoire d'optimiser.
 

poupilou

WRInaute impliqué
Salut,

Je comprends pas :oops:

J'ai rewritté quelques pages suivant cette règle :
Code:
RewriteRule ^repertoire/ma-rubrique.html&ref=(.*)$ /repertoire/index.php?rub=ma_rubrique&ref=$1 [L]

Ma page rewrittée s'affiche bien dans mon browser et dans la barre d'adresse j'ai bien h*ttp://www.mon-site.com/repertoire/ma-rubrique.html&ref=25 mais lorsque je souhaite récupérer ma variable "ref" il ne la trouve pas, j'ai essayé de faire un $_GET['ref'] mais sur mon serveur sur le web il ne me trouve pas cette variable "ref" quelqu'un voit-il le problème ?

Voici ce qu'il m'affiche sur mon serveur web :
Code:
$_SERVER['QUERY_STRING'] = rub=ma_rubrique
$_SERVER['REQUEST_URI'] = /repertoire/ma-rubrique.html&ref=25
$_GET['ref'] =

En local tout marche parfaitement mais sur le serveur web ça bug ? Je suis chez OVH et je tourne sous PHP5.
 

Discussions similaires

Haut