escape le ? dans le Rewrite

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

escape le ? dans le Rewrite

Message le Dim Avr 15, 2007 12:53

Bonjour,

j'essaye de faire un simple redirection de :

-http://fastuff.info/blog/?2005/10/20/6-microsoft-annonce-des-licences-libres

vers

-http://blog.pixgarden.com/2005/10/20/6-microsoft-annonce-des-licences-libres

Avec ceci

Code: Tout sélectionner
RewriteRule ^/?(.*)$ http://blog.pixgarden.com/$1 [R=301]



Mais la redirection se fait vers :

-http://blog.pixgarden.com/?2005/10/20/6-microsoft-annonce-des-licences-libres

Je pense que le "?" n'est pas interprété comme un caractère classique, je me demande donc comment l'"escaper" ?

Merci

Annonces Google


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Message le Dim Avr 15, 2007 14:25

Semblerait que c'est \
mais que ca marche pas avec le ?

\
escapes special characters ( ^ $ ! . * | )


http://perishablepress.com/press/2006/0 ... ss-tricks/


Remi L.
WRInaute passionné
WRInaute passionné
 
Messages: 1063
Enregistré le: 6 Sep 2003

Message le Dim Avr 15, 2007 14:48

Cela ne marche pas avec le ? parce que tu ne peux pas mettre de Query String dans le premier paramètre.

L'UR est souvent utilisé pour supprimer les Query String pas pour en rajouter... ;-)
Il y a des chances que tu raisonnes à l'envers...

Si c'est vraiment dans ce sens que tu veux opérer, il faut que tu isoles la Query String dans une ligne RewriteCond.


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Message le Dim Avr 15, 2007 14:56

Je ne pense pas résonner à l'envers.

Je veux désindéxé fastuff, dotClear sans UR et donner son poid à pixgarden dotClear avec UR.

Je fait une redirection 301 des url non R vers celles R. Cette redirection est faite avec RewriteRule mais ce n'est pas du masquage d'url. Et c'est bien du coté du ndd fastuff qu'il y a un "?"

Non ? Je suis à l'ouest ?

Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Enregistré le: 21 Nov 2005

Message le Dim Avr 15, 2007 15:15

L'echappement marche avec le point d'interrogation. \?
? est le singulier de *


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Message le Dim Avr 15, 2007 15:31

Merci Serious

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine  on

RewriteRule ^/\?(.*)$ http://blog.pixgarden.com/$1 [R=301]


J'ai mis ça donc et ca ne fait plus de redirection du tout...


Remi L.
WRInaute passionné
WRInaute passionné
 
Messages: 1063
Enregistré le: 6 Sep 2003

Message le Dim Avr 15, 2007 17:03

C'est qu'il ne m'a pas cru... :P
"Tu ne peux pas avoir de Query String dans le premier paramètre d'une RewriteRule"

Si tu veux récupérer une Query String il faut faire un truc du genre

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} (.+)
   RewriteRule index\.php   %1


La règle ci-dessus va faire que quand on demandera
www.example.com/?toto
le serveur ira lire
www.example.com/toto

Voilà, si c'est un truc comme cela que tu veux faire, il te suffit de broder... :wink:


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Message le Dim Avr 15, 2007 17:18

Remi L. a écrit:[...]


Désolé t'avais raison. Merci Rémi :D

mon code qui fonctionne :

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} (.+)
RewriteRule index\.php   http://blog.pixgarden.com/%1 [R=301]

gringo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 20
Enregistré le: 12 Mar 2007

Message le Dim Avr 15, 2007 20:26

Salut,

Voici l'URL que j'obtiens avec Firefox:

http:// blog.pixgarden.com/2005/10/20/6-microsoft-annonce-des-licences-libres?2005/10/20/6-microsoft-annonce-des-licences-libres

Est-ce normal?


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Message le Lun Avr 16, 2007 17:09

Heu non pas normal, faut que je regarde ça pff

Warshadow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Enregistré le: 16 Mar 2009

Re: escape le ? dans le Rewrite

Message le Ven Juil 24, 2009 14:22

Bonjour M'sieurs Dames !

Tout d'abord, je m'excuse de remonter un sujet de 2004, mais c'est manifestement toujours d'actualité, en tout cas pour moi...

J'ai besoin de votre aide... Je cherche à faire la même chose que Photoshop user, c'est-à-dire rediriger une adresse de la forme /index.php?param vers /param, tout ceci dans un but de rétro-compatibilité des urls, et surtout afin d'éviter du duplicate content. (Pour savoir comment j'en suis arrivé là, j'ai tout simplement modifié les urls de mon blog, auparavant en /index.php?post/... pour des adresses en /post/... Sauf que du coup mes billets sont accessibles via deux adresses, dont une majorité déjà indexées par Google).

Bref, voici le htaccess de test que j'ai actuellement :

Code: Tout sélectionner
RewriteEngine on

# redirect older addresses with index.php
RewriteCond %{QUERY_STRING} (.+)
RewriteRule ^index\.php$ http://localhost/labs/htaccess/%1 [R=301,L]

# rewrite to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L]


Problème : la partie QUERY_STRING est réécrite à la suite de l'adresse. Donc, si je tapes par exemple /index.php?param j'obtiens /param?param... Et accessoirement une boucle infinie de redirection !

Je ne comprends pas du tout pourquoi ça fait ça, en théorie le QUERY_STRING est ajouté uniquement si on précise le flag QSA, non ?

Note : le fait qu'on ne puisse pas échapper le caractère ? empêche a priori toute solution basés sur un simple RewriteRule.

Merci d'avance de votre aide, ça fait trois heures que je suis dessus et je commence légèrement à craquer là ! :mrgreen:


Photoshop user
WRInaute passionné
WRInaute passionné
 
Messages: 1040
Enregistré le: 8 Déc 2004

Re: escape le ? dans le Rewrite

Message le Ven Juil 24, 2009 14:34

Si mes souvenirs sont bon, j'avais abandonnée... Bonne chance Warshadow

Warshadow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Enregistré le: 16 Mar 2009

Re: escape le ? dans le Rewrite

Message le Ven Juil 24, 2009 15:15

Du nouveau grâce à un ami : en ajoutant ? à la fin de l'url de redirection, ça retire la query_string !

Mon .htaccess devient donc :

RewriteEngine on

# redirect older addresses with index.php
RewriteCond %{QUERY_STRING} (.+)
RewriteRule ^index\.php$ http://localhost/labs/htaccess/%1? [R=301,L]

# rewrite to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L]


Seulement, j'ai encore une boucle infinie avec la 2e Rule... :/ Any idea ?

EDIT : Il me semblait que l'url n'était réinterprétée par le htaccess que si on faisait une redirection avec [R], ce qui n'est manifestement pas le cas, pouvez-vous confirmer ? Et si tel est le cas, comment faire pour que ceci marche ?

Warshadow
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Enregistré le: 16 Mar 2009

Re: escape le ? dans le Rewrite

Message le Ven Juil 24, 2009 17:10

Problème finalement résolu en PHP. Au moins j'ai augmenté mes skills en .htaccess ! \o/

Benamour Jr
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Enregistré le: 18 Sep 2010

Re: escape le ? dans le Rewrite

Message le Dim Oct 02, 2016 13:38

On peut s'en sortir sans passer par PHP, je viens de galérer une heure avant d'enfin trouver la solution :idea:

https://simonecarletti.com/blog/2009/01/apache-rewriterule-and-query-string/

Dans mon cas ca donne genre ceci:

RewriteCond %{QUERY_STRING} ^cat=([a-z-]*)$
RewriteRule ^cours\.php$ %1? [R,L]

Est-ce que quelqu'un pourrait confirmer que si on ne procède pas de la sorte, et que donc on laisse une meme page a la fois accessible via par exemple cours.php?cat=arithmetique et par /arithmetique/ on perd en efficacité SEO vu que le contenu sera dupliqué ?

Le comble serait qu'au final tout ceci ne serve à rien :mrgreen:


Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... 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 :