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 :

Pourquoi l'URL rewriting montre la mauvaise URL dans la barre d'adresse ?


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Pourquoi l'URL rewriting montre la mauvaise URL dans la barre d'adresse ?
    Bonjour

    J'ai une question toute simple, j'ai un .htaccess qui contient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /article/%2/%3/%4/%1.html [R=301]
     
    RewriteRule /article/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    </IfModule>
    une instruction pour redirectionner les les eventuelles anciennes pages PHP (indexees par Google et autres) vers une "Fake" URL en HTML

    une deuxieme pour recuperer le lien HTML et renvoyer sur la bonne page PHP qui va l'interpreter...

    Ca marche tres bien, sauf que dans la barre d'adresse, c'est l'URL PHP avec tous les params qui est affichee et non l'URL en HTML plus lisible, comme cela semblait etre expliquee ici sur un tutoriel...

    Merci de m'eclairer de vos lumieres, car la, je vois plus bien l'interet du rewriterule sinon lors de changement de structure, mais pour la SEO..... ??? ...

    Merci Beaucoup de votre aide.

  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
    Citation Envoyé par bloodipunk Voir le message
    Ca marche tres bien, sauf que dans la barre d'adresse, c'est l'URL PHP avec tous les params qui est affichee et non l'URL en HTML plus lisible
    Tu ne veux pas plutôt dire que ça ne marche pas du tout, qu'en fait il ne se passe rien ?

    Tu peux donner un exemple précis ? URL tapée en entrée, URL obtenue et URL souhaitée ?

    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Je pense qu'il faut le RewriteCond pour chaque RewriteRule, car j'avais le même problème et c'est comme ça que je l'ai résolu !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    merci de ta réponse

    Voici donc un exemple pour être plus clair :

    Ancienne URL (plus du tout utilisée en Lien sur le site, mais indexée par Google et autres) :
    article.php?reference=toto&surcat=tata&catdesc=titi&desc=tutu

    Nouvelle URL (désormais utilisée partout dans les pages du site) :
    /article/tata/titi/tutu/toto.html

    URL réelle Physiquement présente sur le site (utilisée pour créer la page demandée) :
    article.php?reference=toto

    1 - Lorsque je saisie
    "article.php?reference=toto&surcat=tata&catdesc=titi&desc=tutu"
    dans la barre d'adresse,
    la page affichée est bien
    "article.php?reference=toto",
    la redirection se fait donc bien (en 2 fois, d'abord transformation en HTML puis retransformation en article.php?reference=xx)

    2 - Lorsque je saisie
    "/article/tata/titi/tutu/toto.html"
    dans la barre d'adresse
    la page affichée est bien
    "article.php?reference=toto",
    la redirection se fait donc bien...

    MAIS dans tous les cas, c'est
    "article.php?reference=toto"
    qui apparait dans la barre d'adresse (logique me direz-vous), mais si j'utilise justement le URL rewriting c'est parce que je veux masquer mes URL reelles et voir
    "/article/tata/titi/tutu/toto.html"
    dans la barre d'adresse...

    Je pensais que c'était justement une des utilités de la réécriture d'URL, pouvoir faire de la SEO et reformater les URL vues par les visiteurs et les moteurs et, la, je sais plus.....

    Merci d'éclairer ma lanterne qui est bien faible en ce moment....

  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
    Plutôt étrange. Le .htaccess que tu donnes au début de la discussion est bien exactement celui utilisé ? Pas de simplification, correction ou autre ? Pas de ,R ou de http://tonsite.com qui aurait été retiré quelque part ?

    Juste pour faire un test, peux-tu :
    1. Commenter dans ton .htaccess le RewriteCond et le RewriteRule juste en dessus pour ne laisser que la ligne suivante active :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      RewriteRule /article/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    2. Vider le cache de ton navigateur
    3. Aller sur /article/tata/titi/tutu/toto.htm
    4. Nous dire ce qu'affiche le navigateur en terme de contenu (est-ce bien la bonne page ?) et en terme d'URL ?

    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse

    Et cela me rassure que cela te paraisse étrange....

    Bon apres une serie de petits tests....

    Effectivement, j'ai un http://www.monsite.com dans le .htaccess car sinon, le redirectionnement ne fonctionne pas (?!!)...
    Ni sous easyphp ni sur le serveur apache en live))

    Le VRAI .htaccess est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html [R=301]
     
    RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html http://www.monsite.com/article.php?reference=$4 [L]
    </IfModule>
    lorsque je saisi
    article.php?reference=toto&surcat=tata&catdesc=tutu&desc=titi
    je me retrouve bien sur
    article.php?reference=toto
    si je vire la deuxième instruction (RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html http://www.monsite.com/article.php?reference=$4 [L])
    je me retrouve avec une erreur 404 sur art/tata/tutu/titi/toto.html n'existe pas (évidement...)... J'en déduis donc que la redirection pour les anciennes URL fonctionne puisque lorsque la 2eme ligne est active je me retrouve bien ensuite sur /article.php?reference=toto (meme si c'est ce qui apparait dans la barre d'adresse...)

    SI je vire les 2 premières instructions de rewritecond
    il ne me reste dans mon .htaccess que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html http://www.monsite.com/article.php?reference=$4 [L]

    et la... si je tape http://www.monsite.com/art/tata/tutu/titi/toto.html dans la barre d'adresse.... Error 404... ... Le htaccess ne semble pas etre pris en compte... !!!

    Help, Help....

    Je ne comprend plus rien !!! ....

  7. #7
    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 bloodipunk Voir le message
    Effectivement, j'ai un http://www.monsite.com dans le .htaccess car sinon, le redirectionnement ne fonctionne pas (?!!)...
    Et depuis quand ? C'est justement ce http://www.monsite.com qui déclenche la redirection du navigateur. Retire-le et là, miracle, ça fonctionnera comment tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html [R=301]
     
    RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    </IfModule>

    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

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par bloodipunk Voir le message
    Effectivement, j'ai un http://www.monsite.com dans le .htaccess car sinon, le redirectionnement ne fonctionne pas (?!!)...
    Ni sous easyphp ni sur le serveur apache en live))
    J'ai bien essayee de ne pas mettre le http://...., mais sans le nom de domaine, juste avec
    RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    Et la... Rien ne se passe... Plus de redirectionnement...

    J'ai exactement le même .htaccess que celui que tu as fourni et maintenant, le redirectionnement ne fonctionne plus (en tout cas, si je tape article.php?reference=toto&surcat=tata&catdesc=tutu&desc=titi, j'ai la même adresse URL dans la barre d'adresse... c'est ce que je veux, certes, pas de changement, mais la, justement je voudrais voir art/tata/tutu/titi/toto.html... Si c'est possible... Mais bon, admettons que effectivement la redirection se fait... Sans changement de l'URL...)

    Mais quand je saisi directement http://www.monsite.com/art/tata/tutu/titi/toto.html dans la barre d'adresse... pareil... erreur 404... aaaaaaaaaaaaaarrrrrrrrggghhhhh... ... Je m'en sors pas... Plus ca va pire c'est... Ca marche de moins en moins.....

    Juste pour un petit problème de barre d'adresse...

    Merci pour votre aide... Ne me lâchez pas !!!

    EDIT: D'ailleurs, avec un .htaccess simplissime, avec seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    ca ne marche pas ???
    si je saisis http://www.monsite.com/art/tata/tutu/titi/toto.html... erreur 404... Pourtant ca avait l'air de marcher...

  9. #9
    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
    Je n'avais pas fait attention. Il faut aussi retirer le premier / dans le premier membre du RewriteRule vu que les règles sont dans un .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html [R=301]
     
    RewriteRule art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    </IfModule>

    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

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Merci !

    j'ai recuperer exactement ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html [R=301]
     
    RewriteRule art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
    Quand je saisis http://www.monsite.com/article.php?r...titi&desc=tutu
    il ne semble rien se passer... Peut-etre y-a-t-il redirection, mais pas de changement dans la barre d'adresse... Bon...

    Et quand je saisi http://www.monsite.com/art/tata/tutu/titi/toto.html.. le système rame... rame.... La page s'affiche enfin (avec la bonne URL dans la barre d'adresse )... Mais sans les CSS... et ca rame que ca s'arrête jamais.... ... C'est quoi encore le soucis ?

    Bon... dodo... (et oui gmt+7) Demain sera un autre jour..... Avec une solution....
    Merci de ton aide.... A Demain

  11. #11
    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
    Effectivement, il manque encore des choses. Il manque un L dans la redirection. Ca va résoudre le problème de redirection du navigateur pour les anciennes URL. On va également ajouter un ? pour être sûr qu'Apache ne remette pas la query string et provoquer une boucle infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
    RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html? [R=301,L]
    
    RewriteRule art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [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

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [Résolu] Pourquoi l'URL rewriting montre la mauvaise URL dans la barre d'adresse ?
    Bonjour MAC,

    et encore merci de toutes tes réponses et de ton implication...

    Bon... Et bien on avance..... Ça fait pas ce que je veux, mais on s'en rapproche...Maintenant, grâce a ton nouveau code, j'ai exactement le même cas de figure (ca devient cohérent ),
    que je saisisse l'ancienne URL
    ou la nouvelle URL
    C'est bien qui apparait dans la barre d'adresse Et on est biren sur la bonne page physique...

    Mais... Et oui, il y a un mais, la page n'apparait pas bien du tout... Comme si elle ne trouvait pas certains fichiers externes css, javascript.....

    Je passe ce post en résolu, car la redirection fonctionne bien désormais, avec la bonne URL dans la barre d'adresse... C'est l'intitulé de ce post, non ?.!

    J'en ouvre un autre pour ce nouveau problème...

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

Discussions similaires

  1. Format des url sous Joomla, sitemap et URL Rewriting
    Par itmak dans le forum Référencement
    Réponses: 2
    Dernier message: 19/05/2009, 10h58
  2. [URL rewriting] N'importe quelle URL vers un fichier
    Par tochbee dans le forum Apache
    Réponses: 2
    Dernier message: 05/03/2009, 19h55
  3. Réponses: 6
    Dernier message: 14/04/2008, 18h00
  4. Réponses: 6
    Dernier message: 21/02/2008, 19h35
  5. [URL Rewriting] Infos sur l'URL Rewriting
    Par Thomad dans le forum Apache
    Réponses: 2
    Dernier message: 16/09/2007, 00h13

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