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 :

Conflit entre RewriteRule


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut Conflit entre RewriteRule
    Bonjour

    Voilà j'ai un petit soucis avec la réécriture du url du type
    /vtt-s19/laurent-brochard-f56/

    voici la ligne de code de mon fichier .htaccess qu'il devrait prendre normalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?$ velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4 [L]
    et en faite il prend une ligne par là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&debut=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7&debut=$8 [L]
    si je supprime le tiret dans l'url pour avoir cela /vtt-s19/laurentbrochard-f56/ je n'ai aucun soucis cela fonctionne impeccable

    voici mon fichier en entier
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Options +FollowSymlinks
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    RewriteEngine On
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?$ categorie.php?type=$1&id_type=$2 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?p([0-9]*)/?$ categorie.php?type=$1&id_type=$2&debut=$3 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([0-9]*)/?$ categorie.php?type=$1&id_type=$2&annee=$3 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ categorie.php?type=$1&id_type=$2&annee=$3&debut=$4 [L]
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?$ sous-categorie.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?p([0-9]*)/?$ sous-categorie.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&debut=$5 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([0-9]*)/?$ sous-categorie.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&annee=$5 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ sous-categorie.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&annee=$5&debut=$6 [L]
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&debut=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7&debut=$8 [L]
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?$ velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?p([0-9]*)/?$ velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4&debut=$5 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?$ velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4&annee=$5 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4&annee=$5&debut=$6 [L]
     
    #RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-([0-9]*).html$ info_velo.php?type=$1&id_type=$2&marque=$3&id_marque=$4&velo=$6&id_velo=$7&annee=$5 [L]
    #RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?([-a-z0-9]*)-([0-9]*).html$ info_velo.php?&marque=$1&id_marque=$2&velo=$3&id_velo=$4 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?([-a-z0-9]*)-([0-9]*).html$ info_velo.php?type=$1&id_type=$2&ss_type=$3&ss_id_type=$4&marque=$5&id_marque=$6&annee=$7&velo=$8&id_velo=$9 [L]
     
     
     
    RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?$ fabricant_marque.php?type=$1&id_type=$2 [L]
    RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?p([0-9]*)/?$ fabricant_marque.php?type=$1&id_type=$2&debut=$3 [L]
    RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?$ fabricant_marque.php?type=$1&id_type=$2&annee=$3 [L]
    RewriteRule ^([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?p([0-9]*)/?$ fabricant_marque.php?type=$1&id_type=$2&annee=$3&debut=$4 [L]
     
    RewriteRule ^recommander-([0-9]*).html$ send-velo.php?id_velo=$1 [L]
     
    RewriteRule ^commentaire-([-a-z]*)-([0-9]*).html$ commentaire.php?type=$1&id_velo=$2 [L]
     
    RewriteRule ^comparateur-velo.html$ comparateur-velo.php [L]
    RewriteRule ^marque-velo.html$ marque.php [L]
    Merci d'avance pour votre aide car je suis un peu perdu là
    Bonne journée
    Ludo

  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
    Tu es trop générique dans tes règles avec tes /? et les * dans les parenthèses. Par exemple, l'URL matche en effet la 3ème règle que tu donnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/?([-a-z0-9]*)-([0-9]*)/?([-a-z0-9]*)-f([0-9]*)/?([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7 [L]
     
    RewriteRule ^(vtt       )-s(19    )/ (laurent   )-(      )  (brochard  )-f(56    )  (      )  $ ...
    Le contournement pourrait consister à mettre avant ta nouvelle règle mais à l'inverse elle pourrait rentrer en conflit avec d'autres règles

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    ben disons que je ne suis pas un pro de tout çà moi j'applique betement à la meme chose à chaque fois c'est sur que l'on peut tout simplifier mais là cela dépasse mes compétences

    le truc que je ne comprends pas pourquoi avec le tiret il change il ne devrait pas car j'ai bien mis qu'il pouvait y a voir plusieurs paquets de mot avant le f56 non ?

  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
    Je ne peux rien faire de plus que de redonner mon explication et le détail de l'exemple. Parce que tu as des blocs ([0-9]*)/?, tes expressions matchent des URL qui acceptent moins de mots séparés par des / que tu le penses. Le contournement le plus simple est de remonter tes nouvelles expressions dans le fichier .htaccess mais ce n'est pas suffisant, tu pourras imaginer une URL, sur le même principe que celle de Laurent Brochard, qui matchera la nouvelle règle au lieu de la sous-catégorie. La vraie solution est de réécrire tes règles pour les rendre plus spécifiques.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    personnellement cela me dérange pas de tout récrire vu que le site est encore en cours de construction donc c'est le moment...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    voilà j'ai trouvé ma solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&debut=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7 [L]
    RewriteRule ^([-a-z0-9]*)-s([0-9]*)/([-a-z0-9]*)-([0-9]*)/([-a-z0-9]*)-f([0-9]*)/([0-9]*)/p([0-9]*)/?$ categorie-marque.php?ss_type=$1&ss_id_type=$2&type=$3&id_type=$4&marque=$5&id_marque=$6&annee=$7&debut=$8 [L]
    cela fonctionne

  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

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

Discussions similaires

  1. Conflit entre javascript et script ASP
    Par Mvu dans le forum ASP
    Réponses: 2
    Dernier message: 22/02/2005, 16h28
  2. Possibles conflits entre GL, GLAUX et GLUT
    Par barthelv dans le forum GLUT
    Réponses: 1
    Dernier message: 19/11/2004, 12h31
  3. Conflit entre bases de données
    Par BRODU dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2004, 11h40
  4. conflit entre couleurs
    Par khayyam90 dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/07/2004, 18h00
  5. [Technique] Conflits entre plusieurs requêtes
    Par Neowile dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 24/03/2003, 09h37

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