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 :

RewriteRule contenant le nom du fichier


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut RewriteRule contenant le nom du fichier
    Bonjour,

    Je viens de remarquer un comportement bizarre dans mes reecritures des url. ou peut etre que c'est normal mais je l'ignorais!!

    disons que j'ai la regle suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^articles/([0-9]{4})/[a-z0-9-]+/$ /articles/details.php?id_article=$1 [QSA,L]
    ca bug completement si par exemple j'ai l'url suivante: site.com/articles/details/1234/titre-article/ et ce parce que l'url contient "details" qui est le nom du fichier php

    auriez vous une idee pour cela?

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Oui c'est absolument normal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^articles/([0-9]{4})/[a-z0-9-]+/$ /articles/details.php?id_article=$1 [QSA,L]
    Ta règle indique:
    1) commence par articles/
    2) suivit de 4 chiffre (qui sera $1 gâce aux parenthèses)
    3) suivit d'un /
    4) suivit d'une suite de lettre, chiffre ou "-" autant que tu veux (1 ou plus)
    5) suivit d'un /
    6) fin!

    Dans ce cas, tu ne peux matcher que quelque chose du genre http://site.com/articles/[1234]/[nimporte-quoi-osef]/
    (sans les [], c'est juste pour faire des groupes )

    Donc si ton url contient "details" (site.com/articles/details/1234/titre-article/), celui ci ne rentre pas dans la condition

    Si tu veux, tu peux faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^articles/(details/)?([0-9]{4})/[a-z0-9-]+/$ /articles/details.php?id_article=$2 [QSA,L]
    en gros cela rajoute une règle:

    1) commence par articles/
    2) suivit de details/ (facultatif, grâce au "?", et qui sera $1 a cause des parenthèses, indispensable pour rendre "details/" facultatif)
    3) suivit de 4 chiffres (qui sera $2 (du coup))
    4) suivit d'un /
    5) suivit d'une suite de lettre, chiffre ou "-" autant que tu veux (1 ou plus)
    6) suivit d'un / (et d'ailleurs ici je metterai plutot /?, pour rendre le slash final facultatif, mais c'est un choix )
    7) fin!

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonsoir xxkirastarothxx et merci pour ta reponse bien detaillee.

    au fait en me relisant, je me rends compte que je me suis trompé au niveau de la regle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^articles/([0-9]{4})/[a-z0-9-]+/$ /articles/details.php?id_article=$1 [QSA,L]
    Je devais marquer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^articles/[a-z0-9-]+/([0-9]{4})/[a-z0-9-]+/$ /articles/details.php?id_article=$1 [QSA,L]
    ce que j'ai omis est censé etre la rubrique de l'article. si par exemple la rubrique est "details" alors le tout bug. le parametre $_GET['id_article'] n'est pas transmis.

    j'espere que tu vois mieux mon probleme.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    A priori ça a l'air bon du coup.

    Si je résume:

    site.com/articles/categorie1/1234/nimporte-quoi-osef/
    Fonctionne et te renvoie l'id_article 1234 ?

    alors que
    site.com/articles/details/1234/nimporte-quoi-osef/
    Ne fonctionne pas ?

    C'est uniquement le mot-clé "détails" qui fait tout planté ?

    La seule piste que je vois comme ça, c'est qu'une autre règle de ton .htaccess prends le dessus.
    Pour ma part j'ai testé avec quelque chose de très simple, et cela fonctionne:

    [root]/DIVERS/test/.htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteBase /DIVERS/test/
     
    RewriteRule ^articles/[a-z0-9-]+/([0-9]{4})/[a-z0-9-]+/$ articles/details.php?id_article=$1 [QSA,L]
    [root]/DIVERS/test/articles/details.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php var_dump($_GET);?>
    Si j'appelle localhost/DIVERS/test/articles/categorie1/4242/titre-osef/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["id_article"]=> string(4) "4242" }
    et si j'appelle localhost/DIVERS/test/articles/details/4242/titre-osef/, idem:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["id_article"]=> string(4) "4242" }
    Donc, à priori, aucun problème avec le mot clé "details" le soucis viens surement d'ailleurs.
    Regarde peut être du coté de ton code php également.
    Sinon test, comme moi, avec le strict minimum pour vérifier que cela fonctionne

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    C'est uniquement le mot-clé "détails" qui fait tout planté ?
    Eh oui, c'est vraiment bizarre!
    je n'ai aucune autre regle dans le htaccess contenant le mot "details" et j'ai remarque ce probleme avec d'autre regles et URLs. je peux te dire que la premiere fois j'ai du passé une heure a comprendre ce qui allait pas dans la regle avant de comprendre ce qui se passait...
    je suis hebergé chez 1&1 en mutu, c'est peut etre leur config d'apache qui cause ce probleme!

    J'aurais une autre petite qustion hors sujet STP, et si tu t'y connais bien en mysql
    j'ai une table 'factures' mysql ou je ne peux pas utiliser d'Auto_Increment. la colonne "numero" qui est censée etre en AI depend d'une autre colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    colone1 | numero
    F       | 10001
    F       | 10002
    F       | 10003
    C       | 10001
    C       | 10002
    F       | 10004
    ...
    quelle solution vois tu pour cela? faut il utiliser des LOCK TABLES?

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/09/2014, 11h10
  2. [XL-2007] Nom Macro contenant le nom du fichier
    Par Caennais dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/12/2011, 20h25
  3. Réponses: 4
    Dernier message: 28/06/2011, 23h16
  4. nom de fichier contenant slash
    Par Jahjouh dans le forum SL & STL
    Réponses: 10
    Dernier message: 05/12/2007, 14h37
  5. Nom du fichier contenant la date
    Par azerty169 dans le forum Linux
    Réponses: 2
    Dernier message: 17/03/2006, 21h10

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