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 :

Problème de RewriteRule un peu complexe (.. pour moi ..)


Sujet :

Apache

  1. #1
    Invité
    Invité(e)
    Par défaut Problème de RewriteRule un peu complexe (.. pour moi ..)
    Bonjour à tous,

    Voici un problème que je n'arrive à résoudre avec mon faible niveau de connaissances des RewriteRules...

    L'url-rewriting de mon site Spip s'écrit ainsi depuis que nous l'avons récemment changé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monsite/ceci-est-un-url
    Seulement voilà, nous avons de nombreux liens sur le web avec l'ancien écriture qui était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monsite/ceci-est-un-url-xxxx
    où xxxx est un numéro à 4 chiffres correspondant au dernier numéro de l'article.

    J'ai donc ajouté dans l'htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.+)(-[0-9]{4})$	$1 [QSA,R=301]
    ... SEULEMENT PROBLEME :il se trouve que certains articles se finissent pas des années (précédées de -annee-) !
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monsite/ceci-est-un-url-annee-2009
    Et du coup l'url-rewriting ne fonctionne plus, puisqu'il y a confusion avec le numéro de l'article !!!

    Alors j'ai pensé à mettre ceci (avant la régle ci-dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.+)(-annee-[0-9]{4})$	[L]
    mais... hum... ca fonctionne pas !

    Qqqun de sympa pourrait-il m'aider SVP ?

    Un grand merci d'avance :-)

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Vous faîtes une règle sans réécriture pour ceux qui ont annee et une pour vos autres cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteRule annee-\d{4}$ - [L]
    RewriteRule ^(.+)-\d{4}$ $1 [QSA,R=permanent]
     
    # Sinon avec une assertion négative
    #RewriteRule ^(.+)(?<!annee)-\d{4}$ $1 [QSA,R=permanent]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour votre réponse rapide julp :-)

    Avec la première solution, j'ai des erreurs 404 (oui 404 et pas 403...)

    Avec la deuxième solution, ca marche très bien !
    Par contre, autre question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #RewriteRule ^(.+)(?<!-annee)-\d{4}$ $1 [QSA,R=permanent]
    puis-je rajouter dans ce code d'autres assertions négatives en plus que "annee", pcq je me rends compte que ca ne concerne pas seulement ce mot mais aussi "an" et "en" ?

    Encore merci à vous !

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.+)(?<!-en|-an|-annee)-\d{4}$ $1 [QSA,R=permanent]


    La première solution, sans doute plus claire et donc plus facile à maintenir, ne fonctionne pas ? A quelles URL aboutissent-elles (et pour quelles URL réelles) ? Il est aussi possible, si vous aviez d'autres règles, quelles interagissent, maintenant ou avant, avec d'autres.


    (N'oubliez pas de vider votre cache lors de vos tests)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci BEAUCOUP, c'est parfait ainsi.

    La première solution, sans doute plus claire et donc plus facile à maintenir, ne fonctionne pas ? A quelles URL aboutissent-elles (et pour quelles URL réelles) ? Il est aussi possible, si vous aviez d'autres règles, quelles interagissent, maintenant ou avant, avec d'autres.
    Elles aboutissent à des erreurs 404... sans aucun changement dans l'URL !
    Comme si l'url-rewriting ne fonctionnait plus ... curieux.
    Exemple : http://monsite.ltd/xxx-xx-xxx-xx-xxx-en-2010

    (cache bien vidé)

    Mais bon je préfère la 2eme solution de toute façon... encore un grand merci à vous !

    Sinon mis à part l'oubli du - avant le [L], je me demandais ce qui pouvait clocher dans ma règle ci-dessous :
    RewriteRule ^(.+)(-annee-[0-9]{4})$ [L]

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par Paul-75 Voir le message
    Sinon mis à part l'oubli du - avant le [L], je me demandais ce qui pouvait clocher dans ma règle ci-dessous :
    RewriteRule ^(.+)(-annee-[0-9]{4})$ [L]
    Rien, a priori. De toute façon, je n'ai fait que réécrire la même chose un peu différemment plus haut ([0-9] => \d et au lieu dire que le début pouvait être n'importe quoi (^.+), je me suis contenté dire comment devait être la fin).

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

Discussions similaires

  1. requête un peu complexe pour moi
    Par remrem59 dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/07/2011, 17h07
  2. [MCD] Gestion des primes un peu complexe pour moi
    Par wallash dans le forum Schéma
    Réponses: 3
    Dernier message: 17/09/2010, 16h00
  3. requête un peu complexe pour moi (delete + distinct + max)
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/08/2008, 12h38
  4. Requete concernant des dates un peu complexe (pour moi)
    Par fayred dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/02/2008, 08h26
  5. Gérer un Formulaire un peu complexe pour moi
    Par budylove dans le forum Langage
    Réponses: 3
    Dernier message: 17/05/2006, 10h01

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