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 301 et réécriture d'URL récalcitrantes


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut Redirection 301 et réécriture d'URL récalcitrantes
    Bonjour,

    Je suis en train d'apporter quelques modifications à mon site dans l'optique d'avoir un meilleur référencement de la part des moteurs de recherche, notamment un certain nombre de pages qui sont écrites sous cette forme:

    h**p://www.monsite.com/?pg=3&page=category&category_id=305
    A noter: l'absence de index.php

    J'aimerai réécrire cette url sous cette forme:
    h**p://www.monsite.com/category305-3.html

    Or quand je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #redirection
    RewriteCond %{QUERY_STRING} ^pg=([0-9]+)&page=category&category_id=([0-9]+)$
    RewriteRule ^index\.php$ /category%2-%1.html? [R=301,L]
     
    #réécriture
    RewriteRule ^category([0-9]+)-([0-9]+)\.html$ /?pg=$1&page=category&category_id=$2&stop [L]
    RewriteRule ^tags/([0-9]+)/([0-9a-zA-Z-]+)\.html$ /index.php?page=tag&t=$2&p=$1&stop [L]
    Cela ne marche pas et en plus la page category305-3.html m'envoi vers la page category302.html (305-3 = 302), allez comprendre pourquoi !!

    Quelqu'un pourrait-il prendre quelques minutes de son temps afin de ma'ider à regler ce petit problème.

    Merci d'avance.
    Bruno

  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
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^index\.php$ /category%2\-%1.html? [R=301,L]
    ? Pense à vider le cache de ton navigateur avant de tester.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Hélas cela ne change rien

    PS: Je viens de comprendre pourquoi L'url réécrit renvoi vers une autre page. En fait c'est parceque "305-3" n'est pas traduit par category_id=305 et pg=3 mais comme une variable $_GET['category_id'] = 305-3; qui sera traitée par la suite.
    Donc l'url rewrting ne fonctionne pas.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Bon je viens de régler le problème de la réécriture en déplaçant la condition en haut de page en la mettant avant une autre condition qui traitait la réécriture de l'url category305.html (sans la page 'pg').
    Maintenant il me reste la redirection 301 et j'avoue ne pas voir d'où peut provenir le problème .

    Edit: Je viens de m'appercevoir que le problème vennait de l'absence de index.php dans l'url, car quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{QUERY_STRING} ^pg=([0-9]+)&page=category&category_id=([0-9]+)$
    RewriteRule ^index\.php$ /category%2\-%1.html? [R=301,L]
    L'url index.php?pg=...
    est redirigée.

    Est ce qu'il possible de faire la même chose pour une url qui n'a pas de 'index.php' mais qui commence directement par "?pg=..." ?

  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
    Question idiote : pourquoi mettre index.php dans la RewriteRule ? Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{QUERY_STRING} ^pg=([0-9]+)&page=category&category_id=([0-9]+)$
    RewriteRule .* /category%2\-%1.html? [R=301,L]
    pourrait faire l'affaire, mais marchera pour toute URL ayant la query string indiquée en condition (donc avec index.php explicite ou non).

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Si je ne mets pas index.php c'est parce que les pages que je veux rediriger sont déjà indexées par Google sans "index.php".

    Sinon pour la condition que tu m'a envoyé elle me sort une erreur "Boucle de redirection" mais elle réécrit bien l'url.

    On y est presque.

    Merci beaucoup pour ton aide.

    EDIT: Non c'est bon, j'ai trouvé. Il fallait ajouter &stop à la fin de la réécriture de l'url.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2012, 06h49
  2. [URL Rewriting] Redirection 301, comment faire ?
    Par Kotik dans le forum Apache
    Réponses: 3
    Dernier message: 05/08/2010, 16h11
  3. htaccess réécriture d'URL et redirection
    Par Sparktacus dans le forum Apache
    Réponses: 1
    Dernier message: 20/12/2009, 06h58
  4. [URL rewriting] Redirection 301
    Par crash.cell dans le forum Apache
    Réponses: 1
    Dernier message: 23/02/2009, 10h07
  5. [Système] Header redirection 301 et URL rewriting
    Par bobic dans le forum Langage
    Réponses: 6
    Dernier message: 16/04/2007, 20h23

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