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] Problème de redirection suivant les paramètres d'URL


Sujet :

Apache

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut [URL rewriting] Problème de redirection suivant les paramètres d'URL
    Bonjour bonjour,

    J'ai un problème.
    Je souhaite que la personne qui entre sur episode.php?id=1 soit redirigé sur saison-1-episode-1.html

    J'ai donc mis ça dans mon .htacces
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RedirectPermanent /episode.php?id=1  http://www.monsite.com/saison-1-episode-1.html
    RedirectPermanent /episode.php?id=2  http://www.monsite.com/saison-1-episode-2.html
    RedirectPermanent /episode.php?id=3  http://www.monsite.com/saison-1-episode-3.html
    Et ainsi de suite...


    Malheureusement, ça fonctionne pas
    J'ai jeté un coup d'œil sur google, pas de solutions...

  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
    C'est parce que les RedirectXxx ne travaillent pas sur la query string mais que sur le chemin (ce qu'il y a avant le ?, justement : /episode.php). Il faut passer par RewriteCond et RewriteRule, ce qui permet au passage de faire une règle générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-1-episode-%1.html? [R=301,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

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Ca fonctionne bien, mais ya toujours un soucis
    (je n'ai pas été assez précis)

    Le problème, c'est que arrivé à l'id 11, la saison change
    episode.php?id=11 doit correspondre à http://www.monsite.com/saison-2-episode-1.html

  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
    Ah ben, je pouvais pas prévoir !! C'est quoi la règle, exactement ? id=36 par exemple, c'est saison 4, épisode 6 ?

    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
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Tout à fait


    (chaque saison 10 episodes)

  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
    OK, ça va pas être simple de faire du générique, alors : faut faire un bloc par saison :
    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
    RewriteEngine on
    
    # Saison 1
    RewriteCond %{QUERY_STRING} ^id=([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-1-episode-%1.html? [R=301,L]
    
    # Saison 2
    RewriteCond %{QUERY_STRING} ^id=1([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-2-episode-%1.html? [R=301,L]
    
    # Saison 3
    RewriteCond %{QUERY_STRING} ^id=2([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-3-episode-%1.html? [R=301,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
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    CA MARCHE !

    Un énorme merci !

    J'ai encore une petite question (en fait 4):
    1 Avec cette technique, mes anciens liens episode.php?id=23 vont-ils etre modifiés par google par saison-3-episode-3.html ?
    2 Je n'ai plus de risques de duplicate content ?
    3 Pas de sanctions dans le positionnement ?
    4 J'avais mis un lien canonique en attendant la solution, je le supprime, ou je le laisse ?

    Merci merci merci

  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 lukeskins Voir le message
    1 Avec cette technique, mes anciens liens episode.php?id=23 vont-ils etre modifiés par google par saison-3-episode-3.html ?
    Je pense que oui mais je ne suis pas un expert Google donc je ne suis pas sûr à 100%

    Citation Envoyé par lukeskins Voir le message
    2 Je n'ai plus de risques de duplicate content ?
    Ca sera comme c'est aujourd'hui, je pense, donc s'il n'y en a pas, il n'y en aura pas.

    Citation Envoyé par lukeskins Voir le message
    3 Pas de sanctions dans le positionnement ?
    Aucune idée

    Citation Envoyé par lukeskins Voir le message
    4 J'avais mis un lien canonique en attendant la solution, je le supprime, ou je le laisse ?
    Aucune idée

    Pose ces questions précises dans le forum référencement.

    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

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je vais faire ça

    En tous cas, merci pour ton aide !

    Ca faisait 2/3 semaines que je cherchais une réponse

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je me pose encore une question pour la suite,
    Imaginons que ma quatrième saison fasse 15 épisodes, ca posera problème car :

    id=30 saison 3 episode 10
    id=31 saison 4 episode 1
    id=32 saison 4 episode 2
    ...
    id=45 saison 4 episode 15
    id=46 saison 5 episode 1
    ...


    Et donc le souci :
    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
    # Saison 1
    RewriteCond %{QUERY_STRING} ^id=([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-1-episode-%1.html? [R=301,L]
    
    # Saison 2
    RewriteCond %{QUERY_STRING} ^id=1([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-2-episode-%1.html? [R=301,L]
    
    # Saison 3
    RewriteCond %{QUERY_STRING} ^id=2([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-3-episode-%1.html? [R=301,L]
    
    # Saison 4
    RewriteCond %{QUERY_STRING} ^id=2([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-4-episode-%1.html? [R=301,L]
    Ben ça fonctionnera pas, j'ai une petite idée mais qui m'a l'air compliqué, j'attends de voir si tu connais une astuce.

    Merci encore ton aide



    PS : Bien sur pour le moment j'ai pas besoin de ça car toutes les saisons font 10 épisodes, c'est au cas ou ça arrive, je saurai comment faire.

  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
    Et bien il faut gérer le cas particulier les code 4x (et éventuellement les suivants) notamment pour la saison 5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # Saison 4
    RewriteCond %{QUERY_STRING} ^id=3([0-9])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-4-episode-%1.html? [R=301,L]
    RewriteCond %{QUERY_STRING} ^id=4([0-5])$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-4-episode-1%1.html? [R=301,L]
     
    # Saison 5
    RewriteCond %{QUERY_STRING} ^id=46$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-5-episode-1.html? [R=301,L]
    RewriteCond %{QUERY_STRING} ^id=47$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-5-episode-2.html? [R=301,L]
    RewriteCond %{QUERY_STRING} ^id=48$
    RewriteRule ^episode.php$ http://www.monsite.com/saison-5-episode-3.html? [R=301,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
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Merci Mac

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2015, 08h16
  2. Réponses: 2
    Dernier message: 13/07/2012, 14h40
  3. Réponses: 2
    Dernier message: 13/12/2007, 14h45
  4. [URL Rewriting] Problème avec un paramètre
    Par antitrust56 dans le forum Apache
    Réponses: 11
    Dernier message: 07/11/2007, 18h40
  5. Réponses: 3
    Dernier message: 31/07/2007, 16h40

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