URL Rewriting : le paramètre de la langue

Discussion dans 'URL Rewriting et .htaccess' créé par fredm, 22 Mars 2011.

  1. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Bonjour

    J'ai un site en 2 langues (fr et en), avec une page default.asp?lang=[fr ou en].

    Grâce à ce topic je sais rediriger cette page en example.com/ pour le français et example.com/en/ pour l'anglais.

    Mais dans le code, je dois écrire le terme "fr" ou "en". Actuellement le code est :
    Code:
    <a href="default.asp?lang=<%=session("current_lang_selected")%>"
    Donc même si j'écris comme ceci, le problème est que je vais voir apparaitre example.com/fr/ :
    Code:
    <a href="/<%=session("current_lang_selected")%>/"
    Quelqu'un pourrait me dire comment je peux solutionner le problème ?

    Merci, Fred
     
  2. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Code:
    <a href="/<%=session("current_lang_selected") == 'fr'?'':session("current_lang_selected")%>/"
    
    Juste pour te montrer le principe.
    Le mieux est de créer une fonction spécifique te permettant de récupérer la langue ou rien (si c'est fr).
     
  3. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Merci. Je suis d'accord sur le principe mais il y a une erreur de syntaxe sur cette ligne et je sais pas la corriger...
     
  4. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Mince, avec l'habitude, je n'ai pas fait attention que ce n'était pas du PHP mais de l'ASP :D

    Désolé, je ne pourrai pas t'aider sur ce coup …
     
  5. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Merci quand même. En tout cas je suis sur la voie. Il me reste plus qu'à demander cette fonction à un initié en ASP.
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 885
    J'aime reçus:
    74
    De mémoire :

    Code:
    <a href="/<%
    if session("current_lang_selected") <> 'fr' then
      response.write(session("current_lang_selected") & '/')
    end if
    %>"
    
     
  7. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Eh non :? c'est syntax error au niveau du quote 'fr'
    Code:
    if session("current_lang_selected") <> 'fr' then
    ---------------------------------------^
     
  8. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 885
    J'aime reçus:
    74
    Tu as essayé avec les "" plutôt ?
     
  9. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Merci, en fait ça marche super, c'est juste les quotes à remplacer par les doubles-quotes:
    Code:
    href="/<%
    if session("current_lang_selected") <> "fr" then
      response.write(session("current_lang_selected") & "/")
    end if
    %>"
     
  10. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Je galère depuis des heures à cause de ce paramètre de langue :evil:
    En fait je voulais changer ceci pour bien séparer le paramètre le langue.
    Code:
    example.com/template.asp?lang=en&param1=x&param2=y&...
    en celà
    Code:
    example.com/en/template.asp?&param1=x&param2=y&...
    J'ai créé ces redirections :
    Code:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([a-z]{2})\/$ /default.asp?lang=$1 [L]   >>> ok
    RewriteRule ^([a-z]{2})\/(+*)$ /$2&lang=$1 [L]   >>> ko
    Et bien entendu ça ne marche pas pour la dernière règle (pour les pages "template.asp")... alors qu'à titre d'exemple la règle suivante marche bien pour me faire le /en/ que je veux:
    Code:
    RewriteRule ^([a-z]{2})/fiche-([0-9]+).html(.*)$ /template.asp?page=fiche&idfiche=$2&lang=$1$3 [L] [L]
    Pourriez-vous m'aider sur ce problème ?
     
  11. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Les paramètres d'URL ne sont pas "capturable" dans un RewriteRule. Si tu veux que ta redirection transmettent les paramètres à l'adresse redirigée, il faut mettre QSA :

    Code:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([a-z]{2})/$ /default.asp?lang=$1 [L,QSA]
    RewriteRule ^([a-z]{2})/(+*) /$2?lang=$1 [L,QSA]
    
    Pourquoi avais-tu mis un \ devant les / ? Normalement, ce n'est pas utile.

    Essaie ce code, ça devrait faire avancer le chmiblic ;)
     
  12. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Ca ne marche pas :(
    (il y avait une erreur dans ta ligne, j'ai remplacé "?" par "&"):
    Code:
    RewriteRule ^([a-z]{2})/(+*) /$2&lang=$1 [L,QSA]
    Concrètement, le but est de faire correspondre (par exemple, car le nombre de paramètres est variable):
    /template.asp?page=LISTE&idsupport=1&idtype=8&lang=en
    à
    /en/template.asp?page=LISTE&idsupport=1&idtype=8


    Les paramètres d'URL semble être capturables sans le QSA, vu que cette ligne marche bien. Tous les paramètres sont bien dans le $3:
    Code:
    RewriteRule ^([a-z]{2})/fiche-([0-9]+).html(.*)$ /template.asp?page=fiche&idfiche=$2&lang=$1$3 [L]
    voir ici: http://www.agenceducapdantibes.com/en/fiche-458687.html&idtype=12&budg ... =&curpage=
     
  13. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Dans l'adresse que tu fournis, je ne suis pas sur que ces paramètres soit des Query String.
    Les Query String sont définis par la séparation de l'adresse et de ces derniers par un point d'interrogation. Hors, je n'en vois pas dans ton lien.

    Je te confirme aussi que c'est bien "?" et non pas "&" qu'il faut mettre.

    Je viens de voir une erreur dans le code, ce n'est pas (+*) mais (.*) qu'il faut mettre :
    Code:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([a-z]{2})/$ /default.asp?lang=$1 [L,QSA]
    RewriteRule ^([a-z]{2})/(.*) /$2?lang=$1 [L,QSA]
    
    De plus, si tu veux vraiment contrôler les langues utilisables, spécifie les :
    Code:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(fr|en)/$ /default.asp?lang=$1 [L,QSA]
    RewriteRule ^(fr|en)/(.*) /$2?lang=$1 [L,QSA]
    
    De cette manière, si quelqu'un met une langue non supportée, tu peux gérer un 404.
     
  14. fredm
    fredm WRInaute occasionnel
    Inscrit:
    2 Novembre 2004
    Messages:
    483
    J'aime reçus:
    0
    Ca marche au poil !
    Merci, t'es un chef :wink:
     
Chargement...
Similar Threads - Rewriting paramètre langue Forum Date
URL Rewriting : 2 paramètres - page et langue URL Rewriting et .htaccess 16 Septembre 2010
Soucis URL Rewriting et paramètres GET (php) URL Rewriting et .htaccess 1 Septembre 2014
URL Rewriting et paramètre contenant des tirets - WEBDEV URL Rewriting et .htaccess 30 Janvier 2014
Problème URL rewriting - 1&1 - impossible de récupérer paramètres URL Rewriting et .htaccess 28 Novembre 2012
URL Rewriting sans extension et avec paramètres Développement d'un site Web ou d'une appli mobile 18 Juillet 2011
Passage en URL Rewriting : gestion des paramètres URL Rewriting et .htaccess 28 Janvier 2011
Urlrewriting et paramètre URL Rewriting et .htaccess 13 Novembre 2009
URL rewriting et REGEX bonnes pratiques Développement d'un site Web ou d'une appli mobile 9 Septembre 2020
supprimer /index.html sans url rewriting, possible ? URL Rewriting et .htaccess 13 Novembre 2019
Je bloque sur le rewriting des URL contenant un ? URL Rewriting et .htaccess 3 Septembre 2019