IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[URL rewriting] Rediriger une page avec paramètres vers un autre nom de domaine et ce paramètre


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut [URL rewriting] Rediriger une page avec paramètres vers un autre nom de domaine et ce paramètre
    Bonjour à tous,

    Je n'arrive pas à rediriger une page contenant un paramètre vers un autre domaine et ce paramètre-là.

    Pour mieux comprendre, voici un exemple :
    Ma page à rediriger s'appelle http://exemple.com/index.php?param=CHIFFRE
    et devrait pointer vers http://mondomaine.com/CHIFFRE.html

    J'ai testé différents codes qui ne fonctionnent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteRule ^index.php?param=([0-9]+)$ http://mondomaine.com/$1.html  [QSA,L,R=301]
    #Redirect Permanent ^index.php?param=([0-9]+)$ http://mondomaine.com/$1.html
    #RewriteRule ^index.php?param=([0-9]+)$ http://mondomaine.com/$1.html  [R=301,L]
    #RedirectMatch 301 index.php?param=([0-9]+)$ http://mondomaine.com/$1.html
    Pouvez-vous m'aider ?

    Merci d'avance.

    Bien cordialement,

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    J'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rewritecond %{query_string} ^param=(.*)$
    rewriterule index\.php http://mondomaine.com/%1.html [R=301,L]

    EDIT :
    Sauf que ça ne marche pas avec plusieurs paramètres
    Que feriez-vous si vous aviez :

    http://exemple.com/index.php?param=C...&param2=LETTRE
    à
    rediriger vers un autre domaine
    http://domaine.com/CHIFFRE-LETTRE.html
    ?

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ben il suffit tout simplement d'indiquer param et param2 dans le filtre de la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{query_string} ^param=([0-9]*)&param2=([a-zA-Z]*)$
    RewriteRule index\.php http://mondomaine.com/%1-%2.html [R=301,L]
    Si le cas avec param seul se présente, faut faire pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{query_string} ^param=([0-9]*)$
    RewriteRule index\.php http://mondomaine.com/%1.html [R=301,L]
    C'est important de mettre [0-9]* à la place de .* pour éviter que ce .* matche toutes les query strings, y compris celle avec 2 paramètres (c'est pour ça que ça ne marche pas).

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Ben il suffit tout simplement d'indiquer param et param2 dans le filtre de la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{query_string} ^param=([0-9]*)&param2=([a-zA-Z]*)$
    RewriteRule index\.php http://mondomaine.com/%1-%2.html [R=301,L]
    Merci beaucoup, ça marche si mon URL est de la forme :

    http://exemple.com/index.php?param=C...&param2=LETTRE

    Par contre, cela m'affiche les paramètre à la suite et pourtant, je n'ai pas mis QSA :
    http://domaine.com/CHIFFRE-LETTRE.ht...&param2=LETTRE

    Et puis surtout, ça ne marche pas si les paramètres ne sont pas dans cet ordre ou si j'ai d'autres paramètres auxquelles je ne voudrais pas prendre en compte.

    Un exemple, je voudrais que :

    http://exemple.com/index.php?type=LE...alider=valider

    soit redirigé vers seulement :
    http://domaine.com/CHIFFRE-LETTRE.html

    Et là, le code donné ci-dessus ne fonctionne malheureusement pas.

    Merci d'avance pour votre réponse

    Bonne journée.

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour supprimer les paramètres supplémentaires qui apparaissent malgré l'absence de QSA, il faut ajouter un ? à la fin de l'URL de redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    RewriteRule index\.php http://mondomaine.com/%1-%2.html? [R=301,L]
    Pour la question sur les paramètres, ça ne va pas être simple. Il faudrait par exemple passer par des variables d'environnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    RewriteCond %{QUERY_STRING} param=([0-9]+)
    RewriteRule .* - [E=param:%1]
     
    RewriteCond %{QUERY_STRING} param2=([a-z]+) [NC]
    RewriteRule .* - [E=param2:%1]
     
    # 1er cas : param seul
    RewriteCond %{ENV:param} !^$
    RewriteCond %{ENV:param2} ^$
    RewriteRule index\.php http://mondomaine.com/%{ENV:param}.html? [R=301,L]
     
    # 2eme cas : param2 seul
    RewriteCond %{ENV:param} ^$
    RewriteCond %{ENV:param2} !^$
    RewriteRule index\.php http://mondomaine.com/%{ENV:param2}.html? [R=301,L]
     
    # 3eme cas : param et param2
    RewriteCond %{ENV:param} ^$
    RewriteCond %{ENV:param2} ^$
    RewriteRule index\.php http://mondomaine.com/%{ENV:param}-%{ENV:param2}.html? [R=301,L]
    Je n'ai pas testé, donc je ne sais pas du tout si ça marche, c'est fait à l'inspiration.

    Limite, le plus simple est de rediriger les URL qui contiennent param ou param2 comme paramètre d'URL vers un script PHP qui va calculer la bonne URL à rediriger à partir de ces paramètres d'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{QUERY_STRING} param=([0-9]*) [OR]
    RewriteCond %{QUERY_STRING} param2=([a-zA-Z]*)
    RewriteRule index\.php monscript.php [L]
    et monscript.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header("Location: http://mondomaine.com/".$_GET["param"]);
    ?>
    Evidemment, c'est un code simple. En PHP, tu pourras plus facilement gérer les différents cas qui se présente : param ou param2 seul, param et param2 en même temps quelque soit l'ordre, etc.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 181
    Points : 78
    Points
    78
    Par défaut
    Ah oui, super, j'ai préféré ta deuxième solution qui me paraissait la plus simple.

    et ça marche très bien

    Merci beaucoup.

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2013, 14h38
  2. Réponses: 2
    Dernier message: 08/03/2011, 17h43
  3. [URL rewriting] Rediriger les pages sur /index.php
    Par doudoustephane dans le forum Apache
    Réponses: 4
    Dernier message: 23/11/2010, 22h10
  4. Accéder à une page avec des paramètres dans l'url
    Par *alexandre* dans le forum JSF
    Réponses: 3
    Dernier message: 11/03/2009, 20h53
  5. Réponses: 2
    Dernier message: 05/11/2008, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo