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] Réécriture récalcitrante pour redirections sur un autre domaine


Sujet :

Apache

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Points : 52
    Points
    52
    Par défaut [URL Rewriting] Réécriture récalcitrante pour redirections sur un autre domaine
    Bonjour,

    Je suis en train d'essayer de mettre en place de l'url rewriting pour un site que je maintient et qui a changé récemment d'url.
    Les principes de fonctionnements sont les suivants :

    adfi.dyndns.org doit être renvoyé vers www.adfi.info
    adfi.info doit être renvoyé vers www.adfi.info
    accueil.html doit être compris pas le serveur comme étant index.php?id=accueil (accueil est un exemple)
    et index.php?id=accueil doit être réécrit en accueil.html (accueil est un exemple)

    Hors, pour le moment, tout marche sauf un cas de figure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si je tape :
    <a href="http://adfi.dyndns.org/accueil.html" target="_blank">http://adfi.dyndns.org/accueil.html</a>
     
    j'ai ceci qui apparait :
    <a href="http://www.adfi.info/index.php?id=http://www.adfi.info/accueil" target="_blank">http://www.adfi.info/index.php?id=ht...i.info/accueil</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Alors que si j'ai :
    <a href="http://adfi.info/accueil.html" target="_blank">http://adfi.info/accueil.html</a>
     
    J'ai bien ceci :
    <a href="http://www.adfi.info/accueil.html" target="_blank">http://www.adfi.info/accueil.html</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    De même, si je tape :
    <a href="http://adfi.info/index.php?id=accueil" target="_blank">http://adfi.info/index.php?id=accueil</a>
     
    J'ai :
    <a href="http://www.adfi.info/index.php?id=accueil" target="_blank">http://www.adfi.info/index.php?id=accueil</a>
    Au lieu de :
    <a href="http://www.adfi.info/accueil.html" target="_blank">http://www.adfi.info/accueil.html</a>
    Voici le contenu de mon .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteBase /
    RewriteRule adfi.dyndns.org <a href="http://www.adfi.info" target="_blank">www.adfi.info</a> [R=301,L]
    RewriteRule ^(.*).html$ /index.php?id=$1  [L]
    RewriteRule ^adfi.info/(.*)$ www.adfi.info/$1 [R=301,L]
    Y aurait-il une âme charitable pour m'aider, car j'ai du mal à avancer (c'est obscure l'url rewriting)

    Merci

  2. #2
    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
    Tu as défini des virtual hosts, j'imagine, tu peux nous donner le code de ces VH ?

    Le plus simple est de séparer les différentes règles dans les VH, ça évitera les effets de bord. En outre, pour faire une redirection de adfi.dyndns.org vers www.adfi.info, le plus simple est de placer un Redirect / http://www.adfi.info/ dans le VH de adfi.dyndns.org : ça préservera les URL. Et avec un RedirectMatch, tu devrais peut-être même passer d'une écriture en .php en .html.

    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

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    En fait, adfi.dyndns.org = www.adfi.info
    Car j'utilisais dyndns avant d'acheter mon nom de domaine.

    Donc oui c'est défini dans le virtualhost, mais je ne peux faire un redirect car c'est le même dossier...


    Par contre, à force d'essai, je suis parvenu à un résultat qui approche beacoup mes attentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       1. RewriteBase /
       2. RewriteCond %{HTTP_HOST} ^adfi.dyndns.org$
       3. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
       4. RewriteCond %{HTTP_HOST} ^adfi.info$
       5. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
       6. RewriteRule ^(.*).html$ index.php?id=$1

  4. #4
    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
    Citation Envoyé par bagu Voir le message
    Donc oui c'est défini dans le virtualhost, mais je ne peux faire un redirect car c'est le même dossier...
    Aucun rapport : tu peux avoir 2 VH pointant sur le même dossier. Ce que je propose c'est de mettre un Redirect dans un des VH pour rediriger le navigateur sur le second. C'est totalement indépendant des document roots.


    Pour tes règles, qu'est-ce qui fait que ça ne correspond pas à 100% à tes attentes ?

    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

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    En fait, je voulais quelque chose qui semble impossible...

    C'est a dire, si une personne tape http://www.adfi.info/index.php?id=accueil , je voulais que ça réécrive http://www.adfi.info/accueil.html mais que cela accède quand même à http://www.adfi.info/index.php?id=accueil

  6. #6
    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
    Si, ça doit être possible mais c'est risqué car ça peut partir en boucle infinie et c'est surtout difficile de prendre tous les cas en charge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_URI} ^index.php$
    RewriteRule ^(.*)$ %{QUERY_STRING} [C]
    RewriteRule id=(.*)$ $1.html [R,L]

    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

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Il doit manquer quelque chose car avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^index.php$
    RewriteRule ^(.*)$ %{QUERY_STRING} [C]
    RewriteRule id=(.*)$ $1.html [R,L]
    RewriteCond %{HTTP_HOST} ^adfi.dyndns.org$
    RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
    RewriteCond %{HTTP_HOST} ^adfi.info$
    RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
    RewriteRule ^(.*).html$ index.php?id=$1 [L]
    Ou même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^index.php$
    RewriteRule ^(.*)$ %{QUERY_STRING} [C]
    RewriteRule id=(.*)$ $1.html [R]
    RewriteCond %{HTTP_HOST} ^adfi.dyndns.org$
    RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
    RewriteCond %{HTTP_HOST} ^adfi.info$
    RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
    RewriteRule ^(.*).html$ index.php?id=$1 [L]
    La requête http://www.adfi.info/index.php?id=accueil n'est pas réécrite.
    en sachant que ce qui suit le = est toujours un mot, sans espace ni accentuation.
    De même, il n'y est fait référence nulle part (sauf en interne)...
    C'est à dire que les liens de mes pages demandent accueil.html et non index.php?id=accueil

  8. #8
    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
    Citation Envoyé par bagu Voir le message
    De même, il n'y est fait référence nulle part (sauf en interne)...
    C'est à dire que les liens de mes pages demandent accueil.html et non index.php?id=accueil
    Donc ce n'est pas gênant si cette règle ne marche pas ?

    J'ai écrit mon truc à la volée sans tester. C'est donc fort possible que ce ne soit pas la bonne syntaxe. Le souci, c'est que tu as plein de règles et que celles-ci peuvent s'enchaîner malgré le [L].

    EDIT : j'ai testé, et effectivement mes règles ne marchent pas Avec ça, ça ira mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_URI} ^/index.php$
    RewriteRule .* %{QUERY_STRING} [C]
    RewriteRule id\=(.*) /$1.html? [R,L]

    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

Discussions similaires

  1. [URL Rewriting] Réécriture pour domaine chez 1&1
    Par Jonas7 dans le forum Apache
    Réponses: 6
    Dernier message: 02/09/2008, 09h26
  2. [URL Rewriting] Réécriture pour un forum
    Par denzel21 dans le forum Apache
    Réponses: 5
    Dernier message: 17/07/2008, 14h07
  3. [URL Rewriting] réécriture d'url pour inclusion php
    Par kriskafr dans le forum Apache
    Réponses: 3
    Dernier message: 25/02/2008, 11h37
  4. Réponses: 5
    Dernier message: 02/01/2008, 17h01
  5. [URL Rewriting] Réécriture sur entête HTTP
    Par dedz dans le forum Apache
    Réponses: 11
    Dernier message: 16/12/2007, 17h08

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