Réécrire des URL avec un p... de point d'interrogation ?

Discussion dans 'URL Rewriting et .htaccess' créé par cedric_g, 10 Décembre 2010.

  1. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Bonjour

    Je cherche à réécrire des URL du type www.monsite.com/?2010/12/08/123-ici-mon-sujet en www.monsite.com/ici-mon-sujet

    J'ai donc essayé ceci :
    Code:
    RewriteRule ^[?]([0-9]+)[/]([0-9]+)[/]([0-9]+)[/][0-9]+-(.+)$ /$4 [R=301,NC,L]
    
    Mais ça ne fonctionne pas :cry: car apparemment il "prend" ce qu'il y a derrière le point d'interrogation comme des paramètres d'URL (ce qui n'est pas faux) : en clair, j'y arrive pô !

    En fait je bloque sur l'interprétation du point d'interrogation. Je suis certain que c'est simple ! J'aimerais juste éviter de devoir réécrire à la mano mes 437 URL, plus toutes les autres (plus d'un millier au total je pense :roll: )

    (ndlr : refonte de blog suite passage de Dotclear à Wordpress)
     
  2. fandecine
    fandecine WRInaute passionné
    Inscrit:
    2 Avril 2005
    Messages:
    1 886
    J'aime reçus:
    0
    Il faut Mettre un anti-slash devant ton "?" pour signaler que tu parles du caractère uniquement et non du caractère de commande exactement que tu le fait pour les autres caractères de commande comme le "." par exemple :wink:
     
  3. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Marche pô

    J'ai essayé ça :
    Code:
    RewriteRule ^\?([0-9]+)[/]([0-9]+)[/]([0-9]+)[/][0-9]+-(.+)$ /$4 [QSA,R=301,NC,L]
    
    Mais macache !

    Ça va se terminer avec une gestion... en PHP dans le header.php de mon thème :twisted: car je vais pas y passer ma journée !
     
  4. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Bon apparemment il faut que j'utilise un rewritecond sur la querystring... Mais je vois pas la syntaxe : c'est dingue, je n'ai trouvé AUCUN exemple sur le web pour mon cas de figure !

    Ça fait plus d'une heure que je recherche :cry:

    Vais tenter la soluce "brutale" : redirection via le header en PHP ! Nan mais...
     
  5. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Avec ceci ?

    Code:
    RewriteCond %{QUERY_STRING} [0-9]+/[0-9]+/[0-9]+/[0-9]+-(.+)$
    RewriteRule .* /%1? [R=301,L]
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 874
    J'aime reçus:
    71
    Ta problématique m'intéresse je suis en plein dedans. Tu as pu conserver les id des post de DC lors de l'import dans WP ? ET retrouver le même masque d'url ?
     
  7. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Marche pô


    Au niveau de la migration, impossible de garder les ID des posts... Perso j'ai conservé les link_rewrite (uniques), donc je vais m'en passer. J'hésite quand même à établir carrément une liste de réécritures "en dur" !

    Sinon je viens d'essayer sur les tags, ma méthode fonctionne parfaitement (je passe de "/?tag/toto" à "/tag/toto" en 301)

    Je vois la suite après le déjeuner !
     
  8. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Euh, j'ai testé, et ça fonctionne très bien.
     
  9. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 874
    J'aime reçus:
    71
    De toutes façons, dans mon cas je shoote le dossier que j'avais dans l'url (à l'époque je n'avais pas compris comment installer DC à la racine), donc quoi qui se passe toutes mes url vont changer. Va juste falloir que je me fasse un script de redirection aux petits oignons dans ce fameux dossier, pour être sûr de ne générer aucune 404.
     
  10. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    Je confirme la méthode de Blount, c'est bien "RewriteCond %{QUERY_STRING}" qu'il faut utiliser dans ton cas..

    Attention tout de même à utiliser %1 à la place du $1 habituel pour utiliser les termes provenant de le ligne RewriteCond ;)
     
  11. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Cela me redirige vers la racine du site...

    J'ai très exactement utilisé :
    Code:
    RewriteCond %{QUERY_STRING} [0-9]+/[0-9]+/[0-9]+/[0-9]+-(.+)$
    RewriteRule .* /%5? [R=301,L,NC]
    
    (c'est le 5ème paramètre que je veux conserver...)

    Finalement je vais tout gérer via le header.php, c'est plus simple :) (mais bon j'aurais aimé "savoir faire" !)
     
  12. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Cela n'a strictement rien de plus simple qu'en PHP, c'est plus un problème de compréhension qu'un problème de simplicité.

    Le chiffre après le signe "%" correspond au paramètre par rapport aux parenthèses capturantes.
    Dans le RewriteCond, tu n'as qu'une seule parenthèse qui capture. Donc, c'est bien %1 qu'il faut mettre. Comme %5 est vide, il redirige vers la racine, normal.

    Si je t'ai dis que cela fonctionnait, c'est que j'ai testé.
    www.monsite.com/?2010/12/08/123-ici-mon-sujet est bien réécrit en www.monsite.com/ici-mon-sujet.

    Donc, si mon code ne fonctionne pas, c'est que c'est autre chose, et seule la liste complète de tes réécritures nous aidera.
     
Chargement...
Similar Threads - Réécrire interrogation Forum Date
Réécrire url sans la variable Référencement Google 19 Avril 2018
Rediriger/réécrire toutes les pages index.html contenues dans plusieurs dossiers URL Rewriting et .htaccess 1 Mars 2016
Réécrire des articles automatiquement Rédaction web et référencement 23 Février 2016
URL rewriting : réécrire automatiquement un bout de l'url URL Rewriting et .htaccess 21 Juillet 2014
Réécrire les balises Title Débuter en référencement 14 Novembre 2013
Réecrire url avec lang URL Rewriting et .htaccess 13 Octobre 2013
réécrire .php en .html URL Rewriting et .htaccess 2 Janvier 2012
Réecrire l'url d'un répertoire vers le répertoire parent URL Rewriting et .htaccess 15 Mai 2011
réécrire index.php?id=xxx avec le titre d'un champs mysql URL Rewriting et .htaccess 14 Mars 2011
HS: réécrire une url Débuter en référencement 28 Novembre 2010
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice