[résolu] 301 pour des anciennes url non rewritées

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


Lambo
WRInaute discret
WRInaute discret
 
Messages: 100
Inscription: 19 Mar 2005

[résolu] 301 pour des anciennes url non rewritées

Message le Mer Mar 08, 2006 22:45

Bonjour,

j'ai actuellement des urls qui sont de la forme page.php?p=aa_valeur

Je prépare une nouvelle version de mon site avec des url toutes rewritées. Je n'ai pas de problème réécrire les nouvelles urls.
Mais je voudrais tout de même ne pas perdre le référencement des anciennes url en les redirigeant avec une 301 vers les nouvelles.

Donc en fait je veux écrire des règles du style
Code: Tout sélectionner
page.php?p=aa_valeur -> /aa/valeur.html


J'ai écrit des trucs du genre
Code: Tout sélectionner
RewriteRule ^/page.php\?p=aa_(.*) /aa/$1.html [R=301]


Mais je n'ai aucun résultat. J'ai l'impression que les paramètres de la query string posent problème.

Est ce que vous auriez une solution ?

Merci
Dernière édition par Lambo le Jeu Mar 16, 2006 17:03, édité 1 fois.


correiaj
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 25 Avr 2005

Message le Jeu Mar 09, 2006 0:15

Le problème c´est que tu ne peux pas faire une boucle:
url 1 -> url 2
url2 -> url 1
= marche pas


Lambo
WRInaute discret
WRInaute discret
 
Messages: 100
Inscription: 19 Mar 2005

Message le Jeu Mar 09, 2006 9:16

Mais justement ce n'est pas une boucle puisque les nouvelles urls sont différentes. Sinon effectivement, d'une part cela ne fonctionnerait pas, d'autre part, ça ne servirait à rien.

Ce que je veux faire, c'est plutôt un schéma du genre
url1->url2
url2->url3

avec
url1 = page.php?p=aa_valeur (les pages indexées actuellement)
url2 = /aa/valeur.html (les nouvelles urls réécrites)
url3 = nouvellepage.php?param1=aa&param2=valeur (les urls comprises par mon prog)

D'autres idées ?


correiaj
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 25 Avr 2005

Message le Jeu Mar 09, 2006 12:28

url1 = page.php?p=aa_valeur (les pages indexées actuellement)
url2 = /aa/valeur.html (les nouvelles urls réécrites)


Alors il faut:

RewriteCond %{QUERY_STRING} p=aa_([^&]+)
RewriteRule ^page.php$ /aa/%1.html [R=301]

a mettre avant la regle qui gere url2 -> url3


Lambo
WRInaute discret
WRInaute discret
 
Messages: 100
Inscription: 19 Mar 2005

Message le Jeu Mar 09, 2006 13:50

Ah merci, je ne connaissais pas le RewriteCond avec le QueryString.

Je pense que c'est exactement ce qu'il me faut et je crois que ça m'ouvre de nouvelles possibilités !

Merci merci ^^


Lambo
WRInaute discret
WRInaute discret
 
Messages: 100
Inscription: 19 Mar 2005

Message le Jeu Mar 09, 2006 19:23

Bon, les redirections fonctionnent très bien désormais.

Le seul petit hic, c'est qu'après la redirection :

RewriteCond %{QUERY_STRING} p=aa_([^&]+)
RewriteRule ^page.php$ /aa/%1.html [R=301]

les urls sont de la forme :

/aa/%1.html?querystring

Et évidemment je voudrais bien ne pas avoir cette querystring à la fin. Est ce qu'il y a une solution ?


correiaj
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 25 Avr 2005

Message le Ven Mar 10, 2006 0:38

normalement il n´y a pas de query string, sauf si tu mets QSA

spottydj
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 1
Inscription: 15 Mar 2006

Message le Mer Mar 15, 2006 9:41

Bonjour, ce problème m'interesse, car j'ai effectué les meme manipulation, et la query string se rajoute a la fin, voici mes règles :


RewriteRule ^scripts/agenda.php?tout_le_mois=1$ http://www.domaine.com/agenda.1.php [R=301,L]


J'ai essayé ceci après, mais ça n'a pas l'air de fonctionner...
RewriteRule ^agenda.1.php?tout_le_mois=1$ agenda.1.php [L]


Lambo
WRInaute discret
WRInaute discret
 
Messages: 100
Inscription: 19 Mar 2005

Message le Jeu Mar 16, 2006 17:02

Bon, après quelques tests, j'ai trouvé un trick pour qu'il ne remette pas la QS à la fin.

Ma règle est donc
RewriteCond %{QUERY_STRING} p=aa_([^&]+)
RewriteRule ^page.php$ /aa/%1.html? [R=301]

La seule modif c'est le ? juste après le .html
J'ai l'impression qu'avec cela il se dit qu'il y a déjà une QS collée et donc il ne met pas la précédente. En mettant QSA, il ajoute la QS.
Et cela fonctionne aussi en mettant ?toto ou n'importe quelle QS. Mais en ne mettant qu'un ? il fait comme s'il n'y avait rien.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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