escape le ? dans le Rewrite

Discussion dans 'URL Rewriting et .htaccess' créé par Photoshop user, 15 Avril 2007.

  1. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    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:
    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
     
  2. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
  3. Remi L.
    Remi L. WRInaute impliqué
    Inscrit:
    6 Septembre 2003
    Messages:
    909
    J'aime reçus:
    0
    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.
     
  4. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    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 ?
     
  5. Serious
    Serious WRInaute passionné
    Inscrit:
    21 Novembre 2005
    Messages:
    1 843
    J'aime reçus:
    0
    L'echappement marche avec le point d'interrogation. \?
    ? est le singulier de *
     
  6. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    Merci Serious

    Code:
    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...
     
  7. Remi L.
    Remi L. WRInaute impliqué
    Inscrit:
    6 Septembre 2003
    Messages:
    909
    J'aime reçus:
    0
    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:
    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:
     
  8. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    Désolé t'avais raison. Merci Rémi :D

    mon code qui fonctionne :

    Code:
    RewriteCond %{QUERY_STRING} (.+) 
    RewriteRule index\.php   http://blog.pixgarden.com/%1 [R=301]
    
     
  9. gringo
    gringo Nouveau WRInaute
    Inscrit:
    12 Mars 2007
    Messages:
    19
    J'aime reçus:
    0
    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?
     
  10. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    Heu non pas normal, faut que je regarde ça pff
     
  11. Warshadow
    Warshadow Nouveau WRInaute
    Inscrit:
    16 Mars 2009
    Messages:
    5
    J'aime reçus:
    0
    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:
    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:
     
  12. Photoshop user
    Photoshop user WRInaute impliqué
    Inscrit:
    8 Décembre 2004
    Messages:
    863
    J'aime reçus:
    0
    Si mes souvenirs sont bon, j'avais abandonnée... Bonne chance Warshadow
     
  13. Warshadow
    Warshadow Nouveau WRInaute
    Inscrit:
    16 Mars 2009
    Messages:
    5
    J'aime reçus:
    0
    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 ?
     
  14. Warshadow
    Warshadow Nouveau WRInaute
    Inscrit:
    16 Mars 2009
    Messages:
    5
    J'aime reçus:
    0
    Problème finalement résolu en PHP. Au moins j'ai augmenté mes skills en .htaccess ! \o/
     
  15. Benamour Jr
    Benamour Jr Nouveau WRInaute
    Inscrit:
    18 Septembre 2010
    Messages:
    6
    J'aime reçus:
    0
    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:
     
Chargement...
Similar Threads - escape Rewrite Forum Date
En 2018, Google n'utilisera plus la méthode de crawl AJAX basée sur _escaped_fragment_ Référencement Google 5 Décembre 2017
addslashes, mysql_real_escape_string, htmlentities ? Développement d'un site Web ou d'une appli mobile 28 Janvier 2011
Rewrite url manuel URL Rewriting et .htaccess 19 Avril 2020
RegExp du Rewrite URL Rewriting et .htaccess 19 Décembre 2019
Ne prendre qu'une partie d'un QueryString dans une regex RewriteCond URL Rewriting et .htaccess 9 Décembre 2019
Astuce RewriteMap : convertir un .dbm.pag en txt ? Débuter en référencement 8 Juillet 2019
rewriteRule sur wamp erreur 404 URL Rewriting et .htaccess 20 Avril 2019
URL Rewriting : difficultés avec RewriteCond ? URL Rewriting et .htaccess 5 Décembre 2018
Problème avec ma ligne rewrite URL Rewriting et .htaccess 20 Juin 2018
Déplacer les RewriteRule du .htaccess vers le vhost URL Rewriting et .htaccess 16 Janvier 2018