Comment désactiver la navigation dans les répertoires?

245

Je souhaite désactiver la navigation dans les répertoires du dossier / galerias et de tous les sous-répertoires

Index de / galerias / 409

* Parent Directory
* i1269372986681.jpg
* i1269372986682.jpg
* i1269372988680.jpg
Arthurprs
la source
2
Ils le mentionnent dans le film "The Social Network" youtu.be/BPazh2kDdvA?t=1m49s
Daniel L. VanDenBosch

Réponses:

420

Créez un fichier .htaccess contenant la ligne suivante:

Options -Indexes

C’est une option. Une autre option consiste à modifier votre fichier de configuration apache.

Pour ce faire, vous devez d'abord l'ouvrir avec la commande:

vim /etc/httpd/conf/httpd.conf

Recherchez ensuite la ligne: Options Index FollowSymLinks

Changez cette ligne en: Options FollowSymLinks

Enfin, enregistrez et quittez le fichier et redémarrez le serveur apache avec cette commande:

sudo service httpd restart

(Vous avez un guide avec des captures d'écran ici .)

stimpie
la source
14
Cela fonctionne même dans un <Directory> ou <Location> dans un fichier .conf réel
chrismarx
1
@chrismarx dans quel fichier .conf le mettrais-je? .htaccess ne semble pas être activé sur mon serveur, et j'ai lu qu'il vaut mieux ne pas l'utiliser de toute façon. J'ai cependant accès à tous les fichiers du serveur, car c'est un vps.
Charles John Thompson III
1
Je suis coincé sur cette même question, j'ai ajouté le fichier .htaccess avec le code dans le même répertoire que ma page Web mais il me donne toujours une alerte de navigation dans le répertoire. Est-ce que je fais quelque chose de mal?
Randy Gilman
10
Notez que cela .htaccesspourrait être désactivé. Veuillez vérifier la AllowOverridedirective. S'il est défini sur None, il .htaccessest désactivé. Vous pouvez l'activer en définissant AllowOverride All. Pour être plus précis, Allsignifie toutes les directives Apache.
Julian
2
Si vous avez le contrôle du http.conf, mieux vaut le faire là-bas. Il y a un hit de performance avec htaccess
Itay Moav -Malimovka
299

La meilleure façon de le faire est de le désactiver avec le serveur Web apache2. Dans mon Ubuntu 14.X - /etc/apache2/apache2.confchangement ouvert de

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

à

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

puis redémarrez apache en:

sudo service apache2 reload

Cela désactivera la liste des répertoires de tous les dossiers desservis par apache2.

Fumier
la source
11
'sudo service apache2 reload ' sera suffisant!
doctorlai
2
@Jay J'ai aussi essayé "Options -indexes" mais Apache ne voulait pas commencer la postface. J'utilise la version serveur: Apache / 2.4.18 (Ubuntu). Cependant, l'utilisation de "Options FollowSymLinks" a fonctionné selon la réponse de Dung. Je suis simplement curieux de savoir quelle version d'Apache et du système d'exploitation que vous utilisez? Peut-être que c'est une chose de version?
MikeyE
@Jay @MikeyE Même chose ici; Apache ne rechargerait pas en utilisant-Indexes
Crimbo
1
@Jay @MikeyE Apache semble recharger / redémarrer si vous supprimezFollowSymLinks
Crimbo
2
L'exécution apachectl configtestaprès l'ajout Options -Indexes FollowSymLinksà httpd.conf génère l'erreur suivante: "Soit toutes les options doivent commencer par + ou -, soit aucune option ne le peut." Par conséquent, ce qui fonctionnera estOptions -Indexes +FollowSymLinks
John T.
45

Outre les deux méthodes susmentionnées (éditez /etc/apache2/apache2.conf ou ajoutez Options -Indexes dans le fichier .htaccess), voici une autre

a2dismod autoindex

Redémarrez ensuite le serveur apache2

sudo service apache2 restart
doctorlai
la source
4
Vous pouvez utiliser a2dismod -f autoindexpour l' exécution de commandes non bloquantes .
Константин Ван
Belle option nucléaire! Cela fonctionne pour les Aliasdossiers et tout autre chemin desservi par Apache.
kontextify
Dois-je être au courant d'effets secondaires?
Naresh Kumar
28

Éditez / créez un .htaccessfichier à l'intérieur /galeriasavec ceci:

Options -Indexes

La navigation dans les répertoires est fournie par le module mod_autoindex .

Álvaro González
la source
-Les index sur le répertoire racine ne fonctionnent pas, dans apache2.4.33, j'ai dû utiliser la réponse de @Sarvar Nishonboyev
Felipe Valdes
1
@FelipeValdes Veuillez lire attentivement la question et ma réponse. Nous ne parlons pas de répertoire racine mais d'un sous-répertoire et il a été demandé de le faire dans un .htaccessfichier (ce qui n'est pas le moyen le plus performant mais c'est souvent la seule option dans les comptes d'hébergement partagé ou avec des administrateurs système occupés).
Álvaro González
23

Vous pouvez placer un fichier vide appelé index.htmldans chaque répertoire que vous ne souhaitez pas répertorier. Cela présente plusieurs avantages:

  • Il (généralement) ne nécessite aucune configuration sur le serveur.
  • Il continuera de fonctionner, même si l'administrateur du serveur décide d'utiliser "AllowOverride None" dans la configuration du serveur. (Si vous utilisez des .htaccessfichiers, cela peut entraîner de nombreux messages "Erreur 500 - erreur du serveur interne" pour vos utilisateurs!).
  • Il vous permet également de déplacer vos fichiers d'un serveur à l'autre, sans avoir à vous soucier de la configuration d'apache.

Théoriquement, l'auto-indexation pourrait être déclenchée par un fichier différent (cela est contrôlé par l' DirectoryIndexoption), mais je n'ai pas encore rencontré cela dans le monde réel.

Martin JH
la source
La tête haute! Cela ne peut fonctionner qu'avec la directive DirectoryIndexindex.html principalement définie .
nyedidikeke
18

L'une des choses importantes consiste à désactiver un navigateur web apache sécurisé. Par défaut, apache est livré avec cette fonctionnalité activée, mais c'est toujours une bonne idée de la désactiver, sauf si vous en avez vraiment besoin. Ouvrez le fichier httpd.conf dans le dossier apache et recherchez la ligne qui ressemble à ceci:

Options Includes Indexes FollowSymLinks MultiViews

puis supprimez les index de mots et enregistrez le fichier. Redémarrez apache. C'est tout

Sarvar Nishonboev
la source
1
Parfait. Désactivez-le sur toute la machine. Pourquoi cela serait-il activé par défaut, je n'en ai aucune idée ...
eduncan911
1
Cela a fonctionné pour moi sur Ubuntu (apache2.conf) mais pas les options .htaccess -Indexes.
Danniel Little
Cela a fonctionné pour moi sur Ubuntu (/etc/apache2/apache2.conf) mais pas les options .htaccess -Indexes.
user2875289
5

Si vous choisissez de modifier votre fichier httpd.conf pour résoudre ce problème et que vous disposez de plusieurs directives Options, vous devez ajouter un - ou un + avant chaque directive. Exemple:

Options -Indexes + FollowSymLinks

George
la source
3

Ce n'est pas une réponse, juste mon expérience:

Sur mon Ubuntu 12.04 apache2, que je n'ai pas trouvé Indexesdans apache2.conf ou httpd.conf, heureusement je l'ai trouvé dans sites-available/default. Après l'avoir supprimé, il ne voit plus la liste des répertoires. Il faudra peut-être le faire pour sites-available/default-ssl.

paquet
la source
2

Ouvrez votre fichier .htaccess et entrez le code suivant dans

Options -Indexes

Assurez-vous d'appuyer sur la touche ENTRÉE (ou la touche RETOUR si vous utilisez un Mac) après avoir entré les mots "Options -Indexes" afin que le fichier se termine par une ligne vierge.

zish
la source
2

Ajoutez ceci dans votre fichier .htaccess:

Options -Indexes

Si cela ne fonctionne pas pour une raison quelconque, essayez ceci dans votre fichier .htaccess:

IndexIgnore *
زياد
la source
1

Pour compléter la réponse de @ GauravKachhadiya:

IndexIgnore *.jpg

signifie "masquer uniquement les fichiers d'extension .jpg de l'indexation.

La directive IndexIgnore utilise une expression générique pour faire correspondre les répertoires et les fichiers.

  • un caractère étoile, il correspond à tous les caractères d'une chaîne, par exemple: foo ou foo.extension, dans l'exemple suivant, nous allons désactiver la liste des répertoires, aucun fichier ou répertoire n'apparaîtra dans l'index:

    IndexIgnore *

Ou si vous souhaitez masquer des fichiers spatiaux, dans la liste des répertoires, nous pouvons utiliser

IndexIgnore *.php

* .php => correspond à une chaîne qui commence par n'importe quel caractère et se termine par .php

L'exemple ci-dessus masque tous les fichiers se terminant par .php

starkeen
la source
0

Essayez ceci dans .htaccess:

IndexIgnore *.jpg
Gaurav Kachhadiya
la source
Cela ne semblait pas avoir d'effet pour moi. Que doit-il faire?
intcreator