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 :

Boucle de redirection infinie - AliasMatch ?


Sujet :

Apache

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Boucle de redirection infinie - AliasMatch ?
    Bonjour,

    Je configure un serveur de développement/debug avec EasyPHP.
    voici quelques lignes de httpd.conf :
    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
    ...
    DocumentRoot "${path}/www/brr"
    ...
    <Directory "${path}/www/brr">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    <IfModule dir_module>
        DirectoryIndex index.html index.shtml index.wml index.pwml index.php index.php3 index.php4 index.php5
    </IfModule>
    ...
    AliasMatch "(?i)^/(styles|scripts|images)/(module1|module2)" "${path}/www/brr_mod/$2/public/$1/"
    <Directory "${path}/www/brr_mod/module1/public">
    	Options FollowSymLinks Indexes
    	AllowOverride None
    	Order deny,allow
    	Allow from all
    </Directory>
    ...
    les fichiers sont organisés comme suit :
    www/brr/index.php
    www/brr/.htaccess
    www/brr_mod/moduleX/public/images/...
    www/brr_mod/moduleX/public/scripts/...
    www/brr_mod/moduleX/public/styles/...

    et .htaccess contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine on
    RewriteBase /
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
    lorsque je lance un appel à http://127.0.0.1/styles/module1/base.css

    le fichier access.log me donne les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    127.0.0.1 - - [25/Jun/2008:02:02:37 +0200] "GET /styles/module1/base.css HTTP/1.1" 301 252
    127.0.0.1 - - [25/Jun/2008:02:02:37 +0200] "GET /styles/module1/base.css/ HTTP/1.1" 301 263
    127.0.0.1 - - [25/Jun/2008:02:02:37 +0200] "GET /styles/module1/base.css/index.html/ HTTP/1.1" 301 274
    127.0.0.1 - - [25/Jun/2008:02:02:37 +0200] "GET /styles/module1/base.css/index.html/index.html/ HTTP/1.1" 301 285
    ... (20 fois)
    Il rentre donc dans une boucle de redirection... mais je n'ai défini de redirection nulle part !

    Merci d'avance de m'indiquer où est le coupable (hormis moi)... ou de me donner une piste, au moins... parceque là, je sèche.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    j'ai fait quelques manipulations... effacement des répertoires:
    /www/brr/styles, /www/brr/scripts et /www/brr/images
    (qui ne contenaient rien)

    Ai modifié le httpd.conf:
    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
    AliasMatch "(?i)^/(styles|scripts|images)/(module1|module2)/" "${path}/www/brr_mod/$2/public/$1/"
    <DirectoryMatch "^${path}/www/brr_mod/(module1|module2)/public">
    	Options Indexes FollowSymLinks
    	AllowOverride None
    	Order allow,deny
    	Allow from all
    </DirectoryMatch>
     
    AliasMatch "(?i)^/(styles|scripts|images)/" "${path}/www/brr_app/layouts/public/$1/"
    <Directory "${path}/www/brr_app/layouts/public">
    	Options Indexes FollowSymLinks
    	AllowOverride None
    	Order allow,deny
    	Allow from all
    </Directory>
    Dans /www/brr_app/layouts/public/styles/, j'ai un fichier "base.css"
    Dans /www/brr_mod/module1/public/styles/, j'ai un fichier "module1.css"

    A présent, si j'appelle 127.0.0.1/styles/base.css, aucun problème...
    mais si j'appelle 127.0.0.1/styles/module1/module1.css, j'ai une erreur 403
    :
    extrait de error.log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Wed Jun 25 11:19:57 2008] [error] [client 127.0.0.1] client denied by server configuration: .../www/brr_mod/module1/public/styles/
    extrait de access.log:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    127.0.0.1 - - [25/Jun/2008:11:19:57 +0200] "GET /styles/module1/module1.css HTTP/1.1" 403 228
    Donc, changement de nature de mon problème... (Sans avoir pour autant compris quelle était l'erreur précédente !)
    Les deux AliasMatch ont-ils une précédence ? comment se passe-t-elle ?

    j'ai commenté les deux blocs d'instruction <Directory> et <DirectoryMatch> "pour voir"... eh bien, c'est pareil... à croire qu'ils servent à rien...

    EDIT
    ça commence à devenir brouillon... mais, finalement, après avoir vidé mon cache local :
    si j'appelle 127.0.0.1/styles/base.css, je retrouve cette chère vieille boucle de redirection.

    Et là, j'ai perdu mon latin... et tout et tout...
    Au secours !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de me lire...

    Bon, j'ai trouvé... partiellement, en tout cas, pour la boucle de redirection infinie. (quoique je n'ai toujours pas compris pourquoi la boucle incluait /index.html)

    La directive AliasMatch omettait en effet la dernière partie (je pensais qu'elle était traitée automatiquement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AliasMatch "(?i)^/(styles|images|scripts)/(module1|module2)(.*)" "${path}/www/brr_mod/$2/public/$1$3"
    Ainsi, tout se passe bien à ce niveau.

    toutefois, un problème demeure, au niveau de <DirectoryMatch>.
    Si j'écris en clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Directory "${path}/brr_mod/module1/public">
    ...
    </directory>
    la directive est prise en compte, sauf que je dois la réécrire pour autant de modules que j'ai...

    En revanche, si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <DirectoryMatch "^${path}/brr_mod/(module1|module2)/public">
    ...
    </DirectoryMatch>
    la directive n'est pas prise en compte et les droits d'acces ne sont pas appliqués.
    J'en déduis une erreur de syntaxe dans l'expression régulière... mais je ne vois pas comment reformuler.
    Avez-vous une idée ? dois-je ouvrir un nouveau topic pour cela ?

Discussions similaires

  1. erreur boucle de redirection firefox
    Par calitom dans le forum Débuter
    Réponses: 3
    Dernier message: 10/12/2008, 11h02
  2. Réponses: 12
    Dernier message: 23/04/2008, 17h46
  3. Faire une boucle d'attente infinie
    Par ego dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 13/11/2006, 23h14

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