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 :

Redirection dans les deux sens, pas de duplicate content.


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 87
    Par défaut Redirection dans les deux sens, pas de duplicate content.
    Salut,


    suite à ce post : http://www.developpez.net/forums/d60...a/#post3556241

    J'ai encore une question...


    Je veux que index.html (fictif) soit redirigé sur index.php. Ca c'est bon, mais je veux qu'un lien pointant de l'éxtérieur appelé index.php soit renomé de manière permanente (301) en index.html qui doit toujours redirigé sur index.php.

    J'ai donc essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^index\.php <a href="http://localhost:8888/dublin/index.html" target="_blank">http://localhost:8888/dublin/index.html</a> [R=301]
    RewriteRule ^index\.html <a href="http://localhost:8888/dublin/index.php" target="_blank">http://localhost:8888/dublin/index.php</a> [L]
    Malheureusement, apache interprète ça comme une boucle malgré le L. Donc si je ne peux pas faire deux redirections d'affilé, comment je fais?

    J'ai vu sur des forums qu'on peut empêcher google d'indéxer index.php pour ne garder que les urls propres mais dans ce cas, on pert tous les liens extérieurs dans le page ranking, non?

    Je galère :p

  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
    Par défaut
    Citation Envoyé par FCDB Voir le message
    Malheureusement, apache interprète ça comme une boucle malgré le L.
    Pour l'explication de la boucle, voir cette discussion : [L] n'empêche pas de boucler, il interrompt la boucle courante de réécriture. mod_rewrite applique plusieurs fois de suite les règles jusqu'à "converger", c'est-à-dire obtenir une URL définitive qui ne peut plus être réécrite. C'est pour ça qu'une URL correcte en .html est réécrite en interne en .php mais repasse par la redirection externe vers .html. Le contournement que je donne dans la discussion indiquée devrait faire l'affaire pour identifier les réécritures internes et externes.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 87
    Par défaut
    Salut,

    Merci pour l'astuce.

    Ca ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteRule ^index\.html$ http://localhost:8888/dublin/index.php?intern=1 [L]
    RewriteCond %{QUERY_STRING} !intern=1
    RewriteRule ^index\.php$ http://localhost:8888/dublin/index.html [R=301,L]
    Par contre je n'arrive pas à gérer les paramètres GET. Car je veux transformer des index.php?page=...&lang=... en URL réecrite propement et sans les GET.

    Hors je ne trouve pas comment:
    - retirer les get de l'url
    - récupérer les valeurs des get ou les tester dans les conditions

    Ce que je veux faire pour être plus précis c'est suivre ces étapes :

    URL rentrée externe au site :
    /index.php?page=contact_us&lang=English

    transformée en :
    English/contact_us.html


    Si c'est interne :

    English/contact_us.html
    transformée en
    /index.php?page=contact_us&lang=English&intern=1


    Donc ma question, c'est comment faire ça :
    /index.php?page=contact_us&lang=English --> English/contact_us.html

    Merci par avance

  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
    Par défaut
    Il faut d'abord rajouter un QSA dans les [] des RewriteRules, je pense, histoire d'assurer la propagation des divers paramètres d'URL.

    Ensuite, il devrait suffire d'écrire des RewriteRules pour les URL /English/..., sans tenir compte du précédent grâce au QSA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(English|French)/(.*)\.html$ /index.php?page=$2&lang=$1 [QSA,L]
    Je ne suis pas sûr du (English|French), je n'ai jamais trop bien maîtrisé cette syntaxe.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 87
    Par défaut
    Je ne suis pas sûr de bien comprendre l'utilité du QSA. J'ai déjà écrite la modification dans ce sens. Il y a une dixaine de langues donc la syntaxe est un peu plus compliqué que ce que tu as mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([A-Z]*[a-z]+)(/([a-z_A-Z]+))\.html http://localhost:8888/dublin/index.php?page=$3&lang=$1&intern=1 [L]
    Mon probème c'est pour les liens externes au site (j'ai changé tous les liens dans le site...) qui comporte l'ancien modèle d'url (index.php?page=""&lang="")...

  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
    Par défaut
    Je ne comprends pas : avec une tes syntaxes, le navigateur est redirigé vers une URL avec tous les paramètres : j'ai cru comprendre que tu voulais les masquer pour n'utiliser que des URL simples en /English/xxx.html Tu veux faire quoi exactement ? Pour les anciennes URL qui utilisent .php?..., il faut utiliser ma gruge et pour le reste, ne surtout pas mettre de http://localhost:8888/ dans les RewriteRule : une fois de plus, si tu les mets, le navigateur les affichera dans la barre d'adresse.

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

Discussions similaires

  1. Appel ST2030 vers extérieur : pas de son dans les deux sens
    Par Ali Amrouni dans le forum Dépannage et Assistance
    Réponses: 0
    Dernier message: 10/07/2012, 01h45
  2. lier des cellules dans les deux sens
    Par noisat dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 30/06/2008, 16h42
  3. [Oracle 8i] Jointure externe dans les deux sens
    Par Drizzt [Drone38] dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/09/2006, 15h10
  4. Double HashMap (Parcours dans les deux sens)
    Par Graffity dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/02/2006, 11h02
  5. Association navigables dans les deux sens
    Par DarkNagash dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 13/07/2005, 15h11

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