Redirection pour eviter des doublons

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Fév 15, 2008 15:10

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

Ce qui suit marche chez moi :

Code: Tout sélectionner
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: Tout sélectionner
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 accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Fév 15, 2008 15:17

poupilou a écrit: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: Tout sélectionner
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique

Nouvelle destination pour cette page :
Code: Tout sélectionner
h**p://www.mon-site.com/repertoire2/nouvelle-rubrique.html

Est-ce possible ?

Ca marche pareil:

Code: Tout sélectionner
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 occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 15:43

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: Tout sélectionner
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique

et
Code: Tout sélectionner
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 accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Fév 15, 2008 16:09

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: Tout sélectionner
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 accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 16:38

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

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Sam Fév 16, 2008 14:00

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: Tout sélectionner
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 accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Sam Fév 16, 2008 20:17

poupilou a écrit: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 écrit: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: Tout sélectionner
RewriteOptions inherit

dans les .htaccess des sous répertoires, sinon les regles du .htaccess de la racine seront ignorées.

poupilou a écrit: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: Tout sélectionner
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: Tout sélectionner
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 occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Dim Fév 17, 2008 13:37

Merci pour ta réponse Vap.

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 22, 2008 17:09

Salut,

Je comprends pas :oops:

J'ai rewritté quelques pages suivant cette règle :
Code: Tout sélectionner
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: Tout sélectionner
$_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.

Redirection pour eviter des doublons

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités