rewriting avec point d'interrogation

Nouveau WRInaute
Bonjour à tous,

J'ai un problème de rewriting :lol:

j'aimerais rewriter ceci :

plan-ville.php?l=a ==> plan-ville-a.html
plan-ville.php?l=b ==> plan-ville-b.html
plan-ville.php?l=c ==> plan-ville-c.html
....

mais le ? pose problème et je dois récupérer la lettre (pas de [QSA] possible, du moins je crois)

P.-S. C’est un remaniement de site déjà référencé et je ne peux donc pas changer les plan-ville.php?l=xxx
 
WRInaute accro
mais le ? pose problème

quel problème rencontres-tu ? la rèble nécéssaire est tout ce qu'il y a de plus normal.
 
Nouveau WRInaute
Je m'exprime mal peut-être, voici ma régle :

Code:
RewriteRule  ^plan-ville\.php?l=([a-z]+)$ /plan-ville-$1.html [L]

Ne fonctionne pas ==> 404

- je suis chez OVH en mutu
- je ne peux pas changer plan-ville\.php?l=
 
Nouveau WRInaute
nickargall a dit:
Tu n'aurais pas inversé la place de l'url réécrite et de l'url non réécrite dans ta règle ? ??

Non, justement, comme précisé dans le premier post, c'est un remaniement de site déjà bien référencé, l'url plan-ville\.php?l= existe déjà et ne doit pas être touchée.

J'utilise une nouvelle méthode pour mon site, avec les anciennes URL je passe en fait, ma rules n'est pas compléte,désolé, par un fichier de redirection :

Code:
RewriteRule  ^plan-ville\.php?l=([a-z]+)$ /redirect.php?page=plan-ville-$1.html [L]
 
WRInaute accro
ah oki, mais quel interet de faire du rewriting si ce n est pas pour changer l'url affichée ? c'est le but principal du rewriting !
 
Nouveau WRInaute
e-kiwi a dit:
ah oki, mais quel interet de faire du rewriting si ce n est pas pour changer l'url affichée ? c'est le but principal du rewriting !

Parce que je passe par redirect.php maintenant, toutes mes pages passent dorénavant par ce fichier.
Il traîne malheureusement des pages pas rewrité comme la page plan-ville, les autres étant déjà rewrité correctement.

[edit]Ceci dit, le pourquoi n'est pas le sujet,je veux juste faire accepter le ? dans ma rules.[/edit]
 
WRInaute accro
>> Ceci dit, le pourquoi n'est pas le sujet
n'ayant pas la réponse, je ne veux pas passer du temps à chercher pour qu'au final tu dise que c etait pas la bonne méthode ^^ c est pour ca que je cherches à comprendre pourquoi
 
Nouveau WRInaute
Aucune solution ? :cry:

Avec les 'Drapeaux' QSA ou E, ne peut-on pas récupérer la variable "l" ?
 
WRInaute discret
ton problème, c'est que le RewriteRule ne prends pas en compte la querystring (ce qui vient après le ?). Donc il faut passer par un RewriteCond :

RewriteEngine On
RewriteCond %{QUERY_STRING} ^l=(.+)$
RewriteRule ^plan-ville.php$ plan-ville-%1.html [L]

Voilà j'espère t'avoir aidé ;-)
 
Nouveau WRInaute
mattth a dit:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^l=(.+)$
RewriteRule ^plan-ville.php$ plan-ville-%1.html [L]

En plein dans le mille, mattth, je désespérai d'avoir une solution...

Ça marche impec.

Merci beaucoup :D :D :D
 
Nouveau WRInaute
mattth

génial
après 10 heures de recherches j'ai enfin compris grace à ton post pourquoi mon .htaccess pataugeait sur les ?

grand merci

J&J
 
WRInaute impliqué
rtb_fr a dit:
e-kiwi a dit:
ah oki, mais quel interet de faire du rewriting si ce n est pas pour changer l'url affichée ? c'est le but principal du rewriting !

Parce que je passe par redirect.php maintenant, toutes mes pages passent dorénavant par ce fichier.
Il traîne malheureusement des pages pas rewrité comme la page plan-ville, les autres étant déjà rewrité correctement.

[edit]Ceci dit, le pourquoi n'est pas le sujet,je veux juste faire accepter le ? dans ma rules.[/edit]

Pour garder le référencement de tes pages comme plan-ville je pense que le plus propre serait une redirection 301

Code:
RewriteRule  ^plan-ville\.php?l=([a-z]+)$  http://www.domaine.tld/plan-ville-$1.html  [R=301,L]

Le 301 indique que la page a changé d'adresse
 
Nouveau WRInaute
point interrogation redirection avec expression reguliere

Perso grace à mattth j'ai mis ceci au point

extrait

Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^ID=4$
RewriteRule ^(.*)fiche_formation\.htm$ /formations-coaching-commercial-management.php? [R=301,L]

toute URL concernant une fiche formation en.htm?ID=xxxx doit être reroutée
la n°4 sera reroutée 301 vers la nouvelle page php?
le ? apres php bloque le renvoi en qsa de id=4 derrire le .php

TOTAL : Google pigera tout, je recupere les 3 années de PR accumulée au fil du temps sur toutes les pages.

bon .htaccess

JJ
 
Nouveau WRInaute
DadouDuck a dit:
Pour garder le référencement de tes pages comme plan-ville je pense que le plus propre serait une redirection 301

Code:
RewriteRule  ^plan-ville\.php?l=([a-z]+)$  http://www.domaine.tld/plan-ville-$1.html  [R=301,L]

Le 301 indique que la page a changé d'adresse

Ben non, c'est peut-être dû à OVH mais si j'ai un ? dans la première partie de la RewriteRule, erreur 404.
Ton code ci-dessus plante, du moins chez OVH.
 
WRInaute impliqué
Excuse moi, il faut aussi échapper le ?

Code:
RewriteRule  ^plan-ville\.php\?l=([a-z]+)$  http://www.domaine.tld/plan-ville-$1.html  [R=301,L]

Mais curieusement, cela ne semble pas fonctionner non plus (la redirection ne se fait pas :? )
 
Nouveau WRInaute
Effectivement, ça ne fonctionne pas, il semble que la seule soluce qui fonctionne soit d'utiliser : RewriteCond %{QUERY_STRING} ^variable=(.+)$
 
Nouveau WRInaute
point d'interrogation

on ne peut pas échapper un ? - en effet ce caractere est strictement reservé à début de QSA

donc 404 permanent ou reroutage si tu récupères via un autre rewriterule la situation pour les conditions oubliées

Bref, le seul et uniquement moyen de récuperer ce qui suit le ? c'est un rewritecond sur query string
voir l'exemple de code que j'ai mis un peu plus haut.

amuses toi bien , car si tu as de multiples conditions à tester ben l'expression à évaluer va être "amusante" à construire
 
WRInaute accro
Bonjour

Je me heurte au même type de pb, j'ai bien lu les posts ci dessus et ai tenté également de faire joujou avec QUEYR STRING mais bon moi il veut pas ..

Je tente de rediriger de façon permanentes des URL indexées avec des ID de sessions et déjà réécrites vers les mêmes URL réécrites mais sans l'id de session.

Pour êtreplus clair, je veux rediriger des URL du type
www.example.com/blabalbla?session=sjdfh5765df7g6d57
www.example.com/popopo?session=sjdfh5765df7g6d57

vers
www.example.com/blabalbla
www.example.com/popopo

Pour mon .htaccess, j'ai mis un code tout pourri qui fonctionne pas :

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^session=(.*)$
RewriteRule (.*)$ /$1 [R=301,L]

Mon firefox me dit :


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


Si quelqu'un peut me le corriger, je lui en serai éternellemet reconnaissant.
 
Discussions similaires
Haut