Aide Svp, pour une règle de ré-écriture

Discussion dans 'URL Rewriting et .htaccess' créé par stephweb13, 11 Août 2015.

  1. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Bonjour,
    j'ai besoin d'aide Svp pour une règle de ré-écriture d'URL.

    Actuellement, j'ai cette règle:
    Code:
    RewriteRule ^([a-z0-9\-]+)/lang=([en]+)$ post_page?url=$1&lang=$2 [L]
    
    Donc, si je tape ceci:
    Code:
    http://localhost/site/page-test/lang=en
    
    ça fonctionne, mon GET "lang=en" est pris en compte.


    Mais je souhaite avoir des URL comme ceci (remplacer le dernier "/" de l'URL ci dessus, par un "?" :
    Code:
    http://localhost/site/page-test?lang=en
    
    J'ai donc essayé cette règle:
    Code:
    RewriteRule ^([a-z0-9\-]+)?lang=([en]+)$ post_page?url=$1&lang=$2 [L]
    
    Et si je tape ceci:
    Code:
    http://localhost/site/page-test?lang=en
    
    ça fonctionne pas, mon GET "lang=en" n'est pas pris en compte.

    Comment résoudre ce problème SVP?
    Merci beaucoup
     
  2. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 160
    J'aime reçus:
    179
    C'est normal car après le ? ça ne fait plus partie de l'url mais c'est la QUERY String

    Il faut utiliser RewriteCond %{QUERY_STRING} au lieu de RewriteCond %{REQUEST_URI}
     
  3. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Ok merci.
    J'ai donc essayé ce code:
    Code:
    RewriteCond %{QUERY_STRING}
    RewriteRule ^([a-z0-9\-]+)?lang=([en]+)$ post_page?url=$1&lang=$2 [L]
    
    ça me fait une 500 Interval Error.
     
  4. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 160
    J'aime reçus:
    179
  5. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Ok merci.
    Alors, comment je doit faire pour ce que je veux?
    j'ai essayé ceci:
    Code:
    RewriteCond %{QUERY_STRING} ^lang=(.*)$
    RewriteRule (.*) /lang=$1 [R=301]
    
    Et ça ne marche toujours pas.
    merci
     
  6. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 160
    J'aime reçus:
    179
    Bon alors on reprend depuis le départ.
    Rewritecond c'est ta condition.
    Il faut préciser la condition pour laquelle la règle va s'exécuter.
    ^ indique que ça commence par
    $ indique qu'il n'y a rien d'autre après.

    La ligne revriterule c'est la règle de redirection.
    Dans ton premier post tu indiquais que tu voulais rediriger vers post_page?url=$1&lang=$2
    et maintenant tu indiques que tu veux rediriger toutes les url vers vers /lang=$1

    Donc si je suis la règle que tu as écris, pour l'url www.example.com/index.html?lang=en
    tu vas sans doute faire une redirection ves la page : www.example.com/lang=index.html

    Je te propose d'écrire d'abord en français tes règles de redirection avant de les traduire en .htaccess

    SI ma querystring commence par lang=en
    ALORS je redirige n'importe quelle url vers /post_page?url=monurl&lang=en
    SI ma querystring commence par lang=fr
    ALORS je redirige n'importe quelle url vers /post_page?url=monurl&lang=fr

    Ca devrait être plus simple à comprendre maintenant, il suffit de transposer et d'indiquer le bon code de redirection et les bons paramètres (L notamment)
     
  7. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Ok merci.

    au lieu d'avoir ceci:
    Code:
    http://localhost/site/page-test/lang=en
    
    avec cette regle:
    Code:
    RewriteRule ^([a-z0-9\-]+)/lang=([en]+)$ post_page?url=$1&lang=$2 [L]
    
    Je veux des URL comme ceci:
    Code:
    http://localhost/site/page-test?lang=en
    
    Mais je ne sais pas quoi mettre comme règle à la place;
    Je précise que je suis débutant.

    Je viens d'essayer ceci:
    Code:
    RewriteCond %{QUERY_STRING} lang=(.*)$
    RewriteRule ^([a-z0-9\-]+) post_page?url=$1&lang=en [L]
    
    Mais ça ne marche pas.
     
  8. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 160
    J'aime reçus:
    179
    Je vais être un peu plus explicite et mettre des parenthèses
    Tout ce qui est entre parenthèse correspond à une variable. La première parenthèse c'est $1, la seconde c'est $2, et ainsi de suite.

    Voici ce que ça donnerait en français :
    Code:
    SI ma querystring commence par lang=en
    ALORS je redirige (n'importe quelle url) vers /post_page?url=$1l&lang=en
    SI ma querystring commence par lang=fr
    ALORS je redirige (n'importe quelle url) vers /post_page?url=$1&lang=fr
    
    A toi de le traduire en .htaccess

    Et tu ne t'occupes pas de ce qu'il y a après le ? dans la rewriterule, ça tu l'as déjà testé dans la condition donc ce qui se trouve après le ? c'est forcément la même chose que ce que tu as mis dans la condition.
     
  9. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Ok merci beaucoup.
    Code:
    # SI ma querystring commence par lang=en
    RewriteCond %{QUERY_STRING} lang=en$
    # ALORS je redirige (n'importe quelle url) vers /post_page?url=$1l&lang=en
    RewriteRule ^(.*) post_page?url=$1&lang=en [L]
    
    c'est ça? je suis en bonne vois? ou pas du tout? car ça ne marche toujours pas...
    Peut tu me donner la solution stp?
    merci
     
  10. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 160
    J'aime reçus:
    179
    ça me parait déjà beaucoup mieux
    Mais je ne suis pas un expert non plus en redirection.
    Peut-être qu'il ne faudrait pas mettre lang=en$ mais ^lang=en
    Peut-être qu'il ne faudrait pas mettre ^(.*) mais (.*)
    Peut-être qu'il faut mettre le / que tu as supprimé et que pourtant j'avais bien mis dans mon exemple : /post_page au lieu de post_page
    Ou alors utiliser des adresses complètes avec http://www.example.com/post_page et la suite

    Mais tu es vraiment sur la bonne voie, je dirais même que tu y es presque
     
  11. stephweb13
    stephweb13 WRInaute discret
    Inscrit:
    11 Janvier 2012
    Messages:
    67
    J'aime reçus:
    0
    Ok merci.
    J'ai essayé en mettant le "/", et les autres truc que tu ma dit.
    Mais ça ne marche toujours pas.
    Si quelqu'un aurai la solution?
    Merci d'avance
     
Chargement...
Similar Threads - Aide Svp règle Forum Date
aide robot.txt svp Débuter en référencement 26 Mars 2020
SVP aidez moi à comprendre le social referral de mon site Google Analytics 9 Juin 2017
aide pour une redirection svp Développement d'un site Web ou d'une appli mobile 12 Septembre 2015
Google n'affiche pas mon site dans le résultat : Aide SVP Débuter en référencement 15 Septembre 2014
Mon site a perdu tout son positionnement sans raison : Aide SVP Problèmes de référencement spécifiques à vos sites 6 Août 2014
Redirection 301 d'une sous catégorie : besoin d'aide svp Débuter en référencement 2 Juin 2014
Demande d'aide svp Google+ 2 Avril 2014
Demande d'aide svp Débuter en référencement 9 Janvier 2014
Referencement de l'aide svp Débuter en référencement 13 Août 2013
Domaines compagnons et Duplicate Content - Besoin d'aide SVP Crawl et indexation Google, sitemaps 5 Juillet 2013