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

  1. #1
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut 2 configs Apache qui ne fonctionnent pas ensemble
    Bonjour,

    J'ai un site sur un serveur mutualisé, à destination de la famille (photos et vidéos). Comme il est privé, j'ai mis une authentification .htpasswd, sauf pour une seule page (le flux RSS) qui doit être accessible pour que les clients RSS ne demandent pas d'authentification. Le code de ce htaccess (à la racine du site) est celui-ci :

    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
     
    SetEnvIf Request_URI "/path/to/rss$" allowed_uri
    Order Deny,Allow
     
    AuthName "Veuillez vous identifier"
    AuthType Basic
    AuthUserFile "/path/to/.htpasswds/.htpasswd"
    Require valid-user
     
    #Allow valid-user
    Deny from all
    Allow from env=allowed_uri
    Satisfy any
     
    Options +ExecCGI
    # AddHandler php-cgi .php
    Action php-cgi /cgi-bin/php5.cgi
    Ce dernier fonctionnait... jusqu'à récemment.

    Car j'ai eu un problème de vidéos qui ne pouvaient pas être téléchargées si elles dépassaient les 140 Mo. Mon hébergeur a ajouté une directive setHandler (les 3 premières lignes) dans le .htaccess suivant (placé dans le répertoire public du site, il tourne sous le Zend Framework), et cela a résolu le problème de téléchargement :

    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
     
    #Ajout de l'hébergeur pour permettre le téléchargement de grosses vidéos
    <FilesMatch \.php$>
    SetHandler application/x-httpd-php54
    </FilesMatch>
     
    # la suite est de mon fait :
     
    SetEnv APPLICATION_ENV production
    SetEnv OPERATING_SYSTEM linux
     
    # Routing du Zend framework
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
     
    # Prérequis pour la lecture des vidéos
    AddType video/ogg  .ogv
    AddType video/mp4  .mp4
    AddType video/webm .webm
    Le problème que j'ai, c'est que les deux fichiers causent toujours une erreur :
    - si je laisse les 3 lignes avec le "SetHandler application/x-httpd-php54", je peux télécharger les grosses vidéos, mais le flux RSS demande une authentification
    - si je commente ces 3 lignes, je n'ai plus de demande d'authentification, mais je retrouve mon souci sur les vidéos

    J'ai l'impression qu'ils se "gênent" mutuellement, mais je ne sais pas pourquoi. J'ai trop peu de connaissance là dessus, et je ne trouve pas de solution.

    Comment les faire coexister et régler les deux problèmes à la fois ?

    Merci pour votre aide.

  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 764
    Points
    12 764
    Par défaut
    Et si tu mets le allow from all/Satisfy any dans le .htaccess du sous-répertoire rss ?

    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
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut
    Je n'ai pas de sous-répertoire physique, il s'agit d'une route du Zend Framework (redirection vers mon controlleur, qui génère le xml du flux rss).

    J'ai essayé de fusionner les deux .htaccess. J'ai supprimé celui qui était à la racine du site, et j'ai tout mis dans public (le point d'entrée du site). Mais cela ne fonctionne pas mieux. Le .htaccess est ainsi :

    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
     
     
    # Autorisation d'accès (sans identification .htpasswd) pour cette adresse
    SetEnvIf Request_URI "/path/to/rss$" allowed_uri
    Order Deny,Allow
     
    AuthName "Veuillez vous identifier"
    AuthType Basic
    AuthUserFile "/path/to/.htpasswds/.htpasswd"
    Require valid-user
     
    Order Deny,Allow
    Satisfy any
    Deny from all
    Require valid-user
    Allow from env=allowed_uri
     
    ### Surcharger du vhost pour tests
    SetEnv APPLICATION_ENV production
    SetEnv OPERATING_SYSTEM linux
     
    ErrorDocument  404  /error
     
    # Routing du Zend framework
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
     
    # Prérequis pour la lecture des vidéos
    AddType video/ogg  .ogv
    AddType video/mp4  .mp4
    AddType video/webm .webm

  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 764
    Points
    12 764
    Par défaut
    Pour être sûr de bien comprendre : avec ce .htaccess ainsi formé, le flux RSS est bien accessible mais tu as le problème des vidéos. C'est bien ça ? Et si tu ajoutes les 3 lignes avec le SetHandler dans ce même .htaccess agrégé, les vidéos passent mais plus le RSS. C'est bien ça ?

    Peut-être que ça pourrait fonctionner si tu remplaces le bloc <FilesMatch> par un bloc <LocationMatch> faisant la négation de l'URL RSS, des images, CSS, etc. qui ne doivent pas passer par le handler PHP Super facile à dire, mais à faire...

    Autre possibilité : remplacer le SetEnvIf par son équivalent en RewriteRule.

    Au-delà de ces possibles alternatives, je ne suis pas sûr que ce soit possible. J'ai l'impression que le SetHandler rend le SetEnvIf inefficace mais je ne sais pas pourquoi, je n'ai rien trouvé sur le Web à ce propos.

    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
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut
    Oui tu as bien résumé.

    Vu que le but du site est de fournir des vidéos, j'ai préféré la solution où elles sont visibles, mais l'identification est demandée pour le RSS.

    En fait je me demande si le SetEnvIf est bien vérifié quand je demande l'url du flux RSS. Et je ne sais pas du tout comment débugguer, pour savoir quelle est la valeur de allowed_uri.

    Je vais essayer le RewriteRule, mais je ne comprends pas pourquoi cela bloque, j'ai trouvé à plusieurs reprises sur le web(*) ces codes qui laissent l'accès pour une seule url, mais pour moi cela ne fonctionne pas.

    (*) Ici, , et même sur la doc d'Apache...

  6. #6
    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 764
    Points
    12 764
    Par défaut
    Des fois il y a des subtilités avec les variables d'environnement, notamment dans les .htaccess. Les modules sont exécutés dans un certain ordre et les variables ne sont pas persistantes : il suffit qu'Apache réexécute le .htaccess pour une raison ou une autre et les variables ont disparu. C'est assez compliqué à déboguer. Si tu as accès à la configuration centrale d'Apache (fichier httpd.conf ou équivalent), tu peux passer Apache en débug et voir ce qu'il raconte.

    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

  7. #7
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut
    Malheureusement c'est un mutualisé, je n'ai pas pas accès au httpd.conf.

    Par contre j'ai 2 htaccess, cela peut venir de là ? Le premier est à la racine du site (pour l'authentification), et un second dans /public, c'est celui du Zend Framework qui gère les routes (je ne peux pas le déplacer). Je vais essayer de fusionner les deux...

  8. #8
    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 764
    Points
    12 764
    Par défaut
    Je ne connais pas du tout Zend, je ne pourrais pas t'aider. Comme ça, sans rien savoir, je pense que le .htaccess dans le répertoire /public ne sert à rien car je pense qu'il n'y a jamais d'URL en http://site.com/public qui sera appelée directement par le navigateur. Mais je peux me tromper.

    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

  9. #9
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut
    En fait avec ZF on arrive dans /public, c'est là qu'il y a le fichier index.php qui charge le framework, avec le bootstrap et la gestion des routes.

  10. #10
    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 764
    Points
    12 764
    Par défaut
    Oui, mais quelle est l'URL ? Est-ce que /public apparaît dans l'URL ? Si non, quelque soit le fichier, y compris les images, CSS, etc. alors le .htaccess de ce répertoire ne sert strictement à rien.

    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

  11. #11
    Membre expérimenté Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 678
    Points
    1 678
    Par défaut
    Non /public n'apparaît pas dans l'url, c'est le point d'entrée du site.

    Mais le problème ne vient pas du ZF, c'est vraiment un problème de conf Apache. Mon authentification se fait sur le serveur, et non par le framework PHP.

Discussions similaires

  1. section <runtime> dans app.config qui ne fonctionne pas
    Par bundesthor dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 08/04/2014, 22h40
  2. Réponses: 5
    Dernier message: 12/08/2011, 19h56
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 13h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 20h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 11h04

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