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] Flag htacces [L] capricieux


Sujet :

Apache

  1. #1
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut [URL Rewriting] Flag htacces [L] capricieux
    Bonjour

    J'ai un soucis plutôt étrange.
    J'utilisais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
     
    # Acces direct aux ressources public
    RewriteRule scripts/(.*)$ public/scripts/$1[L]
    RewriteRule styles/(.*)$ public/styles/$1 [L]
    RewriteRule images/(.*)$ public/images/$1 [L]
     
    # Acces au routage vers le couple controleur/action approprié
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    et ça fonctionne très bien.
    Je voulais utiliser des répertoires "template" appelé ici "classic".
    J'utilise donc


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
     
    # Acces direct aux ressources public
    RewriteRule scripts/classic/(.*)$ app/template/classic/public/scripts/$1 [L]
    RewriteRule styles/classic/(.*)$ app/template/classic/public/styles/$1 [L]
    RewriteRule images/classic/(.*)$ app/template/classic/public/images/$1 [L]
     
    # Acces au routage vers le couple controleur/action approprié
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    Avec ceci, un script "toto.js", par exemple, sera bien modifié en app/template/classic/public/scripts/toto.js mais le [L] ne fonctionnera pas, je me retrouve alors avec
    index.php?url=app/template/classic/public/images/toto.js

    Je ne comprend pas ce qui fait cette différence de résultats
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  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
    J'ai déjà vu ce genre de truc et j'avoue ne pas comprendre non plus Essaie en mettant un NS sur ta dernière règle car c'est elle qui est appelée alors qu'elle ne devrait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L,NS]

    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
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    ça ne change rien
    Bon au moins, si tu me dis que tu as déjà vu ça, ça veut dire que ça vient peut-être pas de moi
    Bon, n'empêche que je ne sais pas trop contourner ça

    Merci de ton aide en tout cas
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  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
    Arf... Pas très logique tout ça, quand même. Ca donne quoi si tu supprimes la ligne vide entre tes RewriteRule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ewriteEngine on
     
    # Acces direct aux ressources public
    RewriteRule scripts/(.*)$ public/scripts/$1[L]
    RewriteRule styles/(.*)$ public/styles/$1 [L]
    RewriteRule images/(.*)$ public/images/$1 [L]
    # Acces au routage vers le couple controleur/action approprié
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,NS,L]
    Je soupçonne Apache de considérer que parce qu'il y a un saut de ligne, ce sont 2 groupes de règles différents qui doivent être appliqués malgré le 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

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    idem
    J'ai essayé aussi avec des tabulations partout, puis que des espaces partout, sans commentaires, sans ligne vide...
    Rien...
    La seule chose qui fonctionne, c'est changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule scripts/classic/(.*)$
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule scripts/(.*)$
    pour chacune des lignes (et bien sur en modifiant les appels respectifs depuis le site)
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  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
    L'option L n'empêche pas la "nouvelle requête", fruit de la redirection interne, de subir à nouveau la réécriture. Dans les deux jeux de règles donnés, il y a, à un moment ou un autre, boucle infinie (le pire étant le premier du fait des chemins et de leur absence d'ancrage). Il faut être plus strict sur le motif et/ou exclure un certain nombre de cas en ajoutant des conditions (RewriteCond) voir éventuellement des RewriteRule (ça marche aussi ).

    (l'option NS sera sans effet, car le module réécriture n'utilise pas les subrequests à moins qu'il n'y soit explicitement fait appel par l'intermédiaire des options prévues mais on s'éloigne légèrement du sujet)

    Je vous recommande de bien vérifier vos logs et d'activer celui de la réécriture (combinaisons RewriteLog et RewriteLogLevel).

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Merci Julp,

    Je vais tâcher de refaire mes règles.
    Effectivement, je comprend mieux le soucis.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

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

Discussions similaires

  1. [MySQL] Regle d'écriture htacces & url rewriting
    Par Aloneghost dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2010, 14h07
  2. [URL Rewriting] Flag Last non pris en compte
    Par waouh dans le forum Apache
    Réponses: 4
    Dernier message: 26/07/2010, 21h44
  3. Réponses: 1
    Dernier message: 24/05/2010, 20h45
  4. [URL Rewriting] flag last [L] ne fonctionnant pas
    Par Yann_du_sud dans le forum Apache
    Réponses: 2
    Dernier message: 22/05/2008, 14h23
  5. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13

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