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 Kerro . Évalué à 2.
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 gremous . Évalué à 2.
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 ragoutoutou . Évalué à 2.
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 gremous . Évalué à 3.
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 ragoutoutou . Évalué à 0.
mais sinon, c'est bien ça qu'il faut faire.
[^] # Re: Toujours le même :-)
Posté par ragoutoutou . Évalué à 1.
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 ragoutoutou . Évalué à 2.
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 ragoutoutou . Évalué à 1.
[^] # Re: Toujours le même :-)
Posté par ragoutoutou . Évalué à 2.
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 Kerro . É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 ragoutoutou . Évalué à 2.
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 gremous . Évalué à 2.
En fait il suffit d'un seul alias et d'un seul location.
[^] # Re: Toujours le même :-)
Posté par Joris Dedieu (site web personnel) . Évalué à -1.
<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 Kerro . Évalué à 2.
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 santos . Évalué à -1.
# Un truc que j'ai pas capté ?
Posté par benoar . Évalué à 1.
# Location
Posté par peck (site web personnel) . Évalué à 0.
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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.