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 :

Virtual host et sous domaine : restrictions d'accès aux fichiers


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Virtual host et sous domaine : restrictions d'accès aux fichiers
    Bonjour,

    J'ai un soucis dans la config de mes vhosts, en fait ils sont fonctionnent bien mais je n'arrive pas à mettre en place le fait qu'un script n'aille pas accéder au fichier d'un autre vhost. J'ai plusieurs vhosts (pointant vers la même racine) et chacun correspond à un sous-domaine.

    En gros:
    static.monsite.com : pour servir les css,js,swf,img avec pour url monsite.com/img/, monsite.com/css/, .....
    msg.monsite.com: pour les scripts du module "message" dont l'url commence par msg.monsite.com/message/....
    www.monsite.com: pour le reste

    L'objectif étant de rediriger tous les scripts qui n'ont pas à être exécuté sur un vhost (sous domaine) donné vers la page www.monsite.com/home/.

    Par exemple si on essaye de "fourber" dans l'url avec msg.monsite.com/compte/profil/ au lieu de www.monsite.com/compte/profil l'utilisateur est automatiquement redirigé vers www.monsite.com/home/

    Je suis parti sur l'idée d'utiliser le mod_rewrite d'apache.

    Voici la config d'un de mon vhost de test:

    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
    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot "D:/site/zend_workspace/monsite/public"
        ServerName msg.monsite.com
        ErrorLog "c:/wamp/logs/msg_error.log"
        CustomLog "c:/wamp/logs/msg_access.log" common
     
                    RewriteEngine On
                    RewriteCond %{REQUEST_URI} !^/message/
                    RewriteRule ^(.*)$ <a href="http://www.monsite.com/home/" target="_blank">http://www.monsite.com/home/</a> [L]
     
                    <directory "D:/site/zend_workspace/monsite/public">
            Options Indexes FollowSymLinks
            AllowOverride all
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1
                                   Allow from .monsite.com
                    </directory>
    </VirtualHost>
    Je veux tester si dans la requête demandée apparaît "/message/", si non on redirige vers monsite.com/home .

    Sachant que par défaut avec Zend, j'ai un .htaccess dans le rep /public/ (public/css/, public/img... et public/index.php) qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    D'après ce que j'ai compris, apparemment toutes les requêtes passerait par index.php avant d'être traitée.

    Quelqu'un serai me dire ce qu'il ne va pas dans la config de mon vhost?

    Merci

  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
    Pourquoi les différents VH ont le même document root ? Ca serait quand même beaucoup plus simple d'avoir des document roots distincts et non imbriqués pour les différents VH

    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Avec l'architecture de Zend, je suis obligé d'avoir les mêmes "DocumentRoot" car dans mon répertoire public je n'ai que le fichier index.php et les répertoires des css, js, ...

    Monsite
    |-- application
    | |-- Bootstrap.php
    | |-- configs
    | | `-- application.ini
    | |-- controllers
    | | |-- ErrorController.php
    | | `-- IndexController.php
    | | -- MessageController.php (Mon module de message)
    | |-- models
    | `-- views
    | |-- helpers
    | `-- scripts
    | |-- error
    | | `-- error.phtml
    | `-- index
    | `-- index.phtml
    |-- library
    |-- public
    | |-- .htaccess
    | `-- index.php

    En fait, tout passe par l'index.php ensuite ce sont les composants de Zend qui route (de façon transparente) vers le module souhaité ex: MessageController.php.

    Je souhaite mettre en place des vhosts pour que mon site soit scalable facilement. Si mon site à besoin de plus de ressources, je remplacerai les vhosts par des serveurs sans avoir à me replonger longtemps dans le code.

    Une idée pour la config de mon vhost ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'ai enfin trouvé la solution à mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !/message/(.*)$
    RewriteCond %{REQUEST_URI} !index.php$
    RewriteRule $ http://www.monsite.com [L]
    Explication:

    D'une part j'avais une petite erreur de syntaxe pour la première RewriteCond et d'autre part en activant et en visionnant les logs pour la RewriteRule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteLog "c:/wamp/logs/message_rewrite.log"
    RewriteLogLevel 5
    Je me suis rendu compte qu'à la 1er interprétation de l'url, j'étais bien redirigé mais comme tout passe par index.php avec zend, à la 2eme interprétation, index.php correspondait pas à la regexp "!/message/(.*)$" donc redirection forcer vers "http://www.monsite.com" même avec une url du msg.monsite.com/message/.... .

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/04/2014, 12h09
  2. Virtual host et sous domaine
    Par Cabire dans le forum Apache
    Réponses: 2
    Dernier message: 23/03/2009, 10h31
  3. [asp.net] Restriction d'acces aux pages
    Par miya dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/04/2007, 19h05
  4. Accès aux fichiers (sous WinXP Pro SP2)
    Par r-o-m-z dans le forum Windows XP
    Réponses: 8
    Dernier message: 23/12/2006, 11h26
  5. Pas de restrictions d'accès aux fichiers
    Par julien.63 dans le forum Administration système
    Réponses: 5
    Dernier message: 16/11/2006, 22h00

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