escape le ? dans le Rewrite
14 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
escape le ? dans le Rewrite
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
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
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
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
Semblerait que c'est \
mais que ca marche pas avec le ?
http://perishablepress.com/press/2006/0 ... ss-tricks/
mais que ca marche pas avec le ?
\
escapes special characters ( ^ $ ! . * | )
http://perishablepress.com/press/2006/0 ... ss-tricks/
-

Remi L. - WRInaute passionné

- Messages: 1063
- Inscription: 6 Sep 2003
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.
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é

- Messages: 1040
- Inscription: 8 Déc 2004
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 ?
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 ?
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
Merci Serious
J'ai mis ça donc et ca ne fait plus de redirection du tout...
- 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é

- Messages: 1063
- Inscription: 6 Sep 2003
C'est qu'il ne m'a pas cru...
"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
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...
"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...
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
Remi L. a écrit:[...]
Désolé t'avais raison. Merci Rémi
mon code qui fonctionne :
- Code: Tout sélectionner
RewriteCond %{QUERY_STRING} (.+)
RewriteRule index\.php http://blog.pixgarden.com/%1 [R=301]
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
Heu non pas normal, faut que je regarde ça pff
- Warshadow
- Nouveau WRInaute

- Messages: 5
- Inscription: 16 Mar 2009
Re: escape le ? dans le Rewrite
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 :
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à !
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à !
-

Photoshop user - WRInaute passionné

- Messages: 1040
- Inscription: 8 Déc 2004
Re: escape le ? dans le Rewrite
Si mes souvenirs sont bon, j'avais abandonnée... Bonne chance Warshadow
- Warshadow
- Nouveau WRInaute

- Messages: 5
- Inscription: 16 Mar 2009
Re: escape le ? dans le Rewrite
Du nouveau grâce à un ami : en ajoutant ? à la fin de l'url de redirection, ça retire la query_string !
Mon .htaccess devient donc :
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 ?
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 ?
14 messages
• Page 1 sur 1
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 :
- Le gPhone, téléphone mobile révolutionnaire ? - 30-08-2007
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
