[Résolu] RewriteRule et URL dynamique

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

jfb037
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 21 Jan 2011

[Résolu] RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 10:04

Bonjour,
Voici un extrait de mon htaccess
Code: Tout sélectionner
RewriteEngine On
RewriteBase /professionnel/
ErrorDocument 401 /401.html
# ErrorDocument 404 /professionnel/non-trouve.html
ErrorDocument 404 http://www.monsite.com/professionnel/advanced_search.php

# permet d être sûr que les clients ont les modifs de css
RewriteRule ^templates/Original/stylesheet.[0-9]+.css /professionnel/templates/Original/stylesheet.css [L]
RewriteRule ^templates/Original/menu.[0-9]+.css /professionnel/templates/Original/menu.css [L]

# redirection modif marque
RewriteCond %{QUERY_STRING} ^manufacturers_id=10$
RewriteRule ^product_info\.php?manufacturers_id=10(.*)$ /professionnel/product_info.php?manufacturers_id=26$1 [L]


Ma redirection de marque (la dernière) ne semble pas fonctionner.
Je souhaite rediriger :
/professionnel/product_info.php?manufacturers_id=10&products_id=2995
Vers :
/professionnel/product_info.php?manufacturers_id=26&products_id=2995
Quelqu'un aurait-il une piste ?
Cordialement
Dernière édition par jfb037 le Ven Jan 21, 2011 14:47, édité 1 fois.


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 10:49

Les query string ne doivent pas apparaitre dans le RewriteRule.

Code: Tout sélectionner
    # redirection modif marque
    RewriteCond %{QUERY_STRING} ^manufacturers_id=10$
    RewriteRule ^product_info\.php$ /professionnel/product_info.php?manufacturers_id=26 [QSA,L]


QSA permet de faire passer les paramètres URL (au lieu de ton $1).
À voir si ton "manufacturers_id=10" ne passe pas quand même.

jfb037
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 21 Jan 2011

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 11:27

Merci Blont,
Cela ne semble pas fonctionner

Quand doit-on mettre product_info\.php à la place de product_info.php ?
Code: Tout sélectionner
    # redirection modif marque
    RewriteCond %{QUERY_STRING} ^manufacturers_id=10$
    RewriteRule ^product_info\.php$ /professionnel/product_info.php?manufacturers_id=26 [QSA,L]

J'ai essayer avec et sans \, j'ai le même résultat (pas de redirection)

J'ai essayer sans RewriteCond
Code: Tout sélectionner
RewriteRule ^product_info\.php?manufacturers_id=10(.*)$ /professionnel/product_info.php?manufacturers_id=26$1 [L]

Pas mieux

Voici une redirection qui fonctionne si cela peut orienter.
Code: Tout sélectionner
# redirection modif menu 2010
RewriteCond %{QUERY_STRING} ^cPath=192_195$
RewriteRule ^index\.php$ /professionnel/index\.php?cPath=444_509 [R=301,L]


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 11:49

si tu as plusieurs paramètres c'est plutôt :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^(.*&)?manufacturers_id=10(&.*)?$
RewriteRule ^product_info\.php$ /professionnel/product_info.php?%1manufacturers_id=26%2 [L]

jfb037
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 21 Jan 2011

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 12:01

Super forty cela fonctionne.

Par contre j'ai besoin d'une explication de texte :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^(.*&)?manufacturers_id=10(&.*)?$
RewriteRule ^product_info\.php$ /professionnel/product_info.php?%1manufacturers_id=26%2 [L]


(.*&)
(&.*) C'est pour remplacer tous les paramètres ? Pourquoi ils ne sont pas écrit dans le même sens ?

%1
%2 C'est pour rapeller ces paramètres ?

Si je comprend bien c'est équivalent à (.*) et $1 et $2 ?

Merci :D


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 13:18

"." veut dire n'importe quel caractère
"*" veut dire que ce qui précède peut-être répété de 0 à l'infini
"&" veut dire "&"
les parenthèses c'est pour mémoriser
"?" c'est pour dire que ce qui précède est facultatif
=> ca permet de mémoriser d'éventuels paramètres avant manufacturers_id (même principe pour les paramètres après)

%1 correspond à la première valeur mémorisée dans un RewriteCond entre () et %2 la deuxième

jfb037
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 21 Jan 2011

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 14:06

J'ai presque tout compris

sauf pour le & pourquoi est-il nécessaire?
(.*) ne suffirait-il pas ?

Merci


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 14:35

"&" étant le séparateur de paramètres dans une url, c'est plus propre de le mettre. Sinon si tu as une url de ce type ca sera aussi redirigé : /professionnel/product_info.php?toto=123&autre_manufacturers_id=10&products_id=2995

jfb037
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 21 Jan 2011

Re: RewriteRule et URL dynamique

Message le Ven Jan 21, 2011 14:47

Merci beaucoup de ton aide.
:D :D


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