Redirection pour eviter des doublons
39 messages • Page 3 sur 3 • 1, 2, 3
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Webmasterlamogere a raison, il y avait deux ? dans mes règles, ce qui ne marche pas.
Ce qui suit marche chez moi :
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 :
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é!
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é!
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]
Merci Vap pour ta réponse, ça marche parfaitement bien
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 :
et
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 ?
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 ?
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:
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.
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

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
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]
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 :
est-ce qu'il faut mettre la même règle dans un htaccess dans le répertoire /repertoire/ ?
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/ ?
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.
Salut,
Je comprends pas
J'ai rewritté quelques pages suivant cette règle :
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 :
En local tout marche parfaitement mais sur le serveur web ça bug ? Je suis chez OVH et je tourne sous PHP5.
Je comprends pas
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.
39 messages • Page 3 sur 3 • 1, 2, 3
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 :
- Redirection (PHP, JavaScript, serveur...)
- Contrer une redirection 302 intempestive...
- Aperçu des différents types de redirection
- Référencement : gestion des redirections par Yahoo
- A propos des redirections "sauvages"
- A propos des redirections sauvages (302)
- Le détournement de page par redirection
- Comment faire des liens en dur dans son annuaire
- Conseils de netlinking pour Bing (par Microsoft)
- Comment lutter contre les mauvaises redirections 302 (temporaires)
Consultez la description détaillée des produits ou services de Google suivants : Google Images
- Tester la validité d'un lien
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum