Forum général.général Règles différentes pour les mêmes pages sous apache2

Posté par .
Tags : aucun
1
4
sept.
2008
Bonjour

je suis en train de galérer pour une chose qui est surement simple. J'ai un site web qui tourne sous apache2 et je voudrais que le listage d'un répertoire soit différent selon qu'on y accède par une URL ou par une autre.

http://monsite.com/url_publique
interdit le listage du répertoire

http://monsite.com/url_super_secrete
autorise le listage du répertoire

Dans les deux cas ça pointe vers le même endroit.
Je sais faire séparément autoriser ou interdire le listage avec Options +Indexes ou Options -Indexes mais je n'ai pas trouvé comment faire pour qu'un alias soit paramétré différemment (sympa le correcteur de Firefox, je n'arrive jamais à écrire le mot diférament).
  • # Toujours le même :-)

    Posté par (page perso) . Évalué à 2.

    Tu as encore un problème ? :-)
    C'est une plaisanterie, ne le prends surtout pas mal.

    Je ne connais pas la manière correcte pour faire ce que tu souhaites. Par contre c'est faisable en mettant un place un hôte virtuel.

    Ton hôte "normal" est configuré pour ne pas afficher le répertoire.
    Ton hôte "virtuel" est configuré pour l'afficher. Si tu ne peux pas mettre en place d'hôte virtuel (car il faut le nom de domaine qui aille avec, renseigné dans un vrai dns) alors tu peux ruser avec un numéro de port.

    http://monsite.com/url_publique --> pas de listage
    http://monsite-secret.com/url_que_tu_veux --> listage

    ou encore:
    http://monsite.com:81/url_que_tu_veux --> listage

    A noter qu'il est prudent d'utiliser "url_que_tu_veux" car si quelqu'un découvre la ruse par hasard, alors pabô.
    • [^] # Re: Toujours le même :-)

      Posté par . Évalué à 2.

      Ca marche, merci.

      dans /etc/apache2/sites-available/default j'ai mis NameVirtualHost *:80 et <VirtualHost *:80> sinon erreur. Il faut mettre :80

      dans /etc/apache2/ports.conf j'ai ajouté Listen 81

      dans /etc/apache2/sites-available/monsite.conf j'ai mis <VirtualHost *:80> pour le site normal et j'ai ajouté une section entière avec <VirtualHost *:81> et ServerName monsite.com

      Ca marche bien.
      Mais problème je ne sais maintenant pas comment faire pour que le chemin d'accès soit différent dans le second cas. Pour le moment j'ai
      http://monsite.com/
      http://monsite.com:81/
      alors que je voudrais
      http://monsite.com/
      http://monsite.com:81/url_super_secrete



      <VirtualHost *:80>
      DocumentRoot /var/www/monsite.com
      ServerName monsite.com

      <Directory /var/www/monsite.com>
      Options -Indexes
      <//Directory>
      </VirtualHost>

      <VirtualHost *:81>
      DocumentRoot /var/www/monsite.com
      ServerName monsite.com

      <Directory /var/www/monsite.com>
      Options -Indexes
      IndexOptions FancyIndexing FoldersFirst IgnoreCase IgnoreClient
      <//Directory>
      </VirtualHost>

      J'ai mis // devant Directory sinon ça ne s'affiche pas.

      Avec cette config ça marche bien donc mais l'accès est trop facile. Si je mets un alias ça n'interdit pas de consulter quand même le truc sans alias.
      Les deux vont sur la même page.
      http://monsite.com:81/
      http://monsite.com:81/url_super_secrete

      Alors il y a peut-être une astuce différente, ou alors il y a possibilité de faire en sorte que l'alias permette l'accès à une page mais pas sans l'alias et sans avoir à déplacer les fichiers en dehors de l'arborescence de /var/www/monsite.com ?
      • [^] # Re: Toujours le même :-)

        Posté par . Évalué à 2.

        Tu peux définir plusieurs directory au sein d'un même host.

        Pas besoin de faire de virtualhost comme ça...

        Il suffit de faire deux "directory" pointant sur le même chemin local mais donnant un répertoire virtuel différent... (et mettre ce chemin local hors de l'arborescence réelle du répertoire ou se trouve le doc root) c'est dans la doc d'apache.
        • [^] # Re: Toujours le même :-)

          Posté par . Évalué à 3.

          Merci de ta réponse, mais je n'ai pas compris comment faire ce que tu indiques.

          Ce que j'ai compris c'est ça mais mon apache le refuse ce qui ne m'étonne pas:

          Alias /url_publique/ /ailleurs/chemin/
          <Directory /ailleurs/chemin/>
          Options -Indexes
          <//Directory>

          Alias /url_secrete/ /ailleurs/chemin/
          <Directory /ailleurs/chemin/>
          Options +Indexes
          IndexOptions FancyIndexing FoldersFirst IgnoreCase IgnoreClient
          <//Directory>
          • [^] # Re: Toujours le même :-)

            Posté par . Évalué à 0.

            De mon côté, je comprend pas le pourquoi des doubles slashes...

            mais sinon, c'est bien ça qu'il faut faire.
            • [^] # Re: Toujours le même :-)

              Posté par . Évalué à 1.

              Bon, on me moinse, mais sans donner une critique valable ou une solution simple et efficace...

              je viens de tester sur mon serveur, ça marche bien comme je l'ai dit...



              Alias /tst /privateweb/tst
              <Directory "/privateweb/tst">
              Options Indexes FollowSymLinks
              AllowOverride None
              Order allow,deny
              Allow from all


              Alias /tst2 /privateweb/tst2
              <Directory "/privateweb/tst2">
              Options -Indexes
              AllowOverride None
              Order allow,deny
              Allow from all



              pas besoin de chipoter avec des virtualhost, des liens symboliques, de la réécriture, ou autres fantaisies.

              Et cette histoire de double slash est sans doutes la source de la mauvaise interprétation de ton fichier de config.
              • [^] # Re: Toujours le même :-)

                Posté par . Évalué à 2.

                Le code est: (désolé, pas moyend e corriger plus haut...)


                Alias /webtools-tst /PRD/webtools-tst
                <Directory "/PRD/webtools-tst">
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
                </Directory>

                Alias /webtools-tst2 /PRD/webtools-tst
                <Directory "/PRD/webtools-tst">
                Options -Indexes
                AllowOverride None
                Order allow,deny
                Allow from all
                </Directory>
                • [^] # Re: Toujours le même :-)

                  Posté par . Évalué à 1.

                  (du coup je viens de comprendre que l'histoire des double slashes, ce serait tout de même mieux de pouvoir corriger ses posts sur ce forum plutôt que de pouvoir voter pour tout et n'importe quoi comme à la StarAcademy)
                  • [^] # Re: Toujours le même :-)

                    Posté par . Évalué à 2.

                    Bon il faut tout oublier... je me suis planté. J'ai cru que ça marchait, mais ... non...

                    l'option location, par contre est la bonne...

                    vous pouvez faire disparaître tout ce que j'ai mis plus haut sous un déluge de moinssage, c'est bien mérité.
                    • [^] # Re: Toujours le même :-)

                      Posté par (page perso) . Évalué à 2.

                      Bon il faut tout oublier... je me suis planté. J'ai cru que ça marchait, mais ... non...
                      Hum :-)

                      l'option location, par contre est la bonne
                      Je ne saisi pas comment l'utiliser pour obtenir le résultat voulu. Un exemple serait bienvenu.
                      • [^] # Re: Toujours le même :-)

                        Posté par . Évalué à 2.

                        (bon je sors de ma cachette où la honte ne va pas tarder à me ramener...)

                        Alias /tst /privateweb/tst

                        Alias /tst2 /privateweb/tst
                        <Location "/tst">
                        Options Indexes
                        AllowOverride None
                        Order allow,deny
                        Allow from all
                        </Location>

                        <Location "/tst2">
                        Options -Indexes
                        AllowOverride None
                        Order allow,deny
                        Allow from all
                        </Location>
                        • [^] # Re: Toujours le même :-)

                          Posté par . Évalué à 2.

                          Je viens de tester et ça marche très bien, merci :)
                          En fait il suffit d'un seul alias et d'un seul location.
      • [^] # Re: Toujours le même :-)

        Posté par (page perso) . Évalué à -1.

        Pourquoi tu fais pas avec 2 sous domaines :

        <VirtualHost *:80>
        DocumentRoot /var/www/monsite.com
        ServerName www.monsite.com
        ServerAlias monsite.com
        <Directory /var/www/monsite.com>
        Options -Indexes
        <//Directory>
        </VirtualHost>

        <VirtualHost *:80>
        DocumentRoot /var/www/monsite.com
        ServerName admin.monsite.com
        <Directory /var/www/monsite.com>
        Options -Indexes
        IndexOptions FancyIndexing FoldersFirst IgnoreCase IgnoreClient
        <//Directory>
        </VirtualHost>
  • # Meilleure réponse

    Posté par (page perso) . Évalué à 2.

    Je viens de trouver la réponse à ton problème.

    1 - tu crés un lien symbolique vers ton répertoire "non listable"
    2 - tu édites ton fichier de config de site pour créer un alias vers ce lien symbolique
    3 - c'est tout

    Lien symbolique:

    ln -s /var/www/monsite.com_bis /var/www/monsite.com


    Fichier de config du site:

    DocumentRoot /var/www/monsite.com

    <Directory /var/www/monsite.com>
    Options -Indexes
    <//Directory>

    Alias /avec_liste/ /var/www/monsite.com_bis/
    <Directory /var/www/monsite.com_bis>
    Options +Indexes
    IndexOptions FancyIndexing FoldersFirst IgnoreCase IgnoreClient
    <//Directory>



    Je suis presque certain qu'il existe encore mieux (c'est à dire sans lien symbolique) mais je n'ai pas encore trouvé.
  • # url rewriting ?

    Posté par . Évalué à -1.

    ça ne serait pas plus simple avec une règle de réécriture d'url ?
  • # Un truc que j'ai pas capté ?

    Posté par . Évalué à 1.

    Je ne comprend pas bien : en gros, t'as une URL qui ne sert à rien (celle qui sera "non-autorisée") et une autre "secrète". Donc, à quoi te sert la première ? Pourquoi n'avoir pas simplement une seule URL secrète ?
  • # Location

    Posté par (page perso) . Évalué à 0.

    Tu t'embête avec les <Directory> alors que ce qui t'intéresse, c'est les <Location>

    Ils fonctionnent exactement de la même façon sauf qu'il concernent les url et non pas les répertoires sur le disques. Et comme tu le dis si bien 2 url peuvent pointer vers le même répertoire (alias par exemple).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.