Come disabilitare la navigazione nella directory?


Risposte:


420

Creare un file .htaccess contenente la seguente riga:

Options -Indexes

Questa è un'opzione. Un'altra opzione è la modifica del file di configurazione di Apache.

Per fare ciò, devi prima aprirlo con il comando:

vim /etc/httpd/conf/httpd.conf

Quindi trovare la riga: Opzioni Indici FollowSymLinks

Cambia quella riga in: Opzioni FollowSymLinks

Infine, salva ed esci dal file e riavvia il server apache con questo comando:

sudo service httpd restart

(Hai una guida con schermate qui .)


14
Funziona anche in una <Directory> o <Location> in un vero file .conf
chrismarx,

1
@chrismarx in quale file .conf lo inserirò? .htaccess non sembra essere abilitato sul mio server e ho letto che è meglio non usarlo comunque. Tuttavia, ho accesso a tutti i file del server, in quanto è un vps.
Charles John Thompson III,

1
Sono bloccato su questa stessa domanda, ho aggiunto il file .htaccess con il codice alla stessa directory della mia pagina Web, ma mi sta ancora dando un avviso di navigazione nella directory. Sto facendo qualcosa di sbagliato?
Randy Gilman,

10
Si noti che .htaccesspotrebbe essere disattivato. Si prega di controllare la AllowOverridedirettiva. Se impostato su None, .htaccessviene disattivato. Puoi accenderlo impostando AllowOverride All. Per essere più precisi, Allsignifica tutte le Direttive Apache.
Giuliano

2
Se hai il controllo di http.conf, meglio farlo lì. C'è un grande successo con htaccess
Itay Moav

299

Il modo migliore per farlo è disabilitarlo con webserver apache2. Nel mio Ubuntu 14.X - apri il /etc/apache2/apache2.confcambiamento da

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

per

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

quindi riavviare apache:

sudo service apache2 reload

Questo disabiliterà l'elenco delle directory da tutte le cartelle servite da apache2.


11
'sudo service apache2 reload ' sarà sufficiente!
Doctorlai,

2
@Jay Ho anche provato "Opzioni -indici" ma Apache non avrebbe iniziato la postfazione. Sto eseguendo la versione Server: Apache / 2.4.18 (Ubuntu). Tuttavia, l'utilizzo di "Opzioni FollowSymLink" ha funzionato secondo la risposta di Dung. Sono solo curioso di sapere quale versione di Apache e OS stai utilizzando? Forse è una cosa versione?
MikeyE,

@Jay @MikeyE Lo stesso qui; Apache non ricaricherebbe usando-Indexes
Crimbo il

1
@Jay @MikeyE Apache sembra ricaricare / riavviare se rimuoviFollowSymLinks
Crimbo

2
L'esecuzione apachectl configtestdopo l'aggiunta Options -Indexes FollowSymLinksa httpd.conf genera il seguente errore: "O tutte le opzioni devono iniziare con + o -, oppure nessuna opzione può". Pertanto, ciò che funzionerà èOptions -Indexes +FollowSymLinks
John T.

45

Oltre ai suddetti due metodi (modifica /etc/apache2/apache2.conf o aggiungi Opzioni -Index nel file .htaccess), eccone un altro

a2dismod autoindex

Riavvia il server apache2 in seguito

sudo service apache2 restart

4
È possibile utilizzare a2dismod -f autoindexper l' esecuzione di comandi non bloccanti .
Константин Ван,

Bella opzione nucleare! Funziona con Aliascartelle e qualsiasi altro percorso servito da Apache.
kontextify

Dovrei essere consapevole di eventuali effetti collaterali farlo?
Naresh Kumar,

28

Modifica / Crea un .htaccessfile all'interno /galeriascon questo:

Options -Indexes

La navigazione nella directory è fornita dal modulo mod_autoindex .


-Gli indici nella directory principale non funzionano, in apache2.4.33, ho dovuto usare la risposta di @Sarvar Nishonboyev
Felipe Valdes,

1
@FelipeValdes Per favore leggi attentamente sia la domanda che la mia risposta. Non stiamo parlando della directory principale ma di una sottodirectory ed è stato richiesto di essere realizzabile in un .htaccessfile (che non è il modo più performante ma è spesso l'unica opzione negli account di hosting condiviso o con amministratori di sistema occupati).
Álvaro González,

23

È possibile inserire un file vuoto chiamato index.htmlin ciascuna directory che non si desidera elencare. Questo ha diversi vantaggi:

  • (Di solito) richiede una configurazione zero sul server.
  • Continuerà a funzionare, anche se l'amministratore del server decide di utilizzare "AllowOverride None" nella configurazione del server. (Se si utilizzano .htaccessfile, questo può portare a molti messaggi "Errore 500 - Errore interno del server" per i tuoi utenti!).
  • Ti consente anche di spostare i tuoi file da un server a quello successivo, senza dover fare confusione con la configurazione di Apache.

Teoricamente, l'autoindicizzazione potrebbe essere innescata da un file diverso (questo è controllato DirectoryIndexdall'opzione), ma devo ancora incontrarlo nel mondo reale.


Dritta! Questo può funzionare solo con index.htmlla direttiva DirectoryIndex definita principalmente .
nyedidikeke

18

Una delle cose importanti è l'impostazione di un server Web Apache sicuro è disabilitare la navigazione nella directory. Di default apache viene fornito con questa funzione abilitata, ma è sempre una buona idea disabilitarla a meno che non sia realmente necessaria. Apri il file httpd.conf nella cartella apache e trova la riga che appare come segue:

Options Includes Indexes FollowSymLinks MultiViews

quindi rimuovere gli indici di parole e salvare il file. Riavvia apache. Questo è tutto


1
Perfetto. Disabilita a livello di macchina. Perché questo dovrebbe essere abilitato di default, non ne ho idea ...
eduncan911

1
Questo ha funzionato per me su Ubuntu (apache2.conf) ma le opzioni .htaccess -Indexes no.
Danniel Little,

Questo ha funzionato per me su Ubuntu (/etc/apache2/apache2.conf) ma le opzioni .htaccess -Indexes no.
user2875289

5

Se si sceglie di modificare il file httpd.conf per risolvere questo problema e si dispone di più direttive Opzioni, è necessario aggiungere un - o un + prima di ogni direttiva. Esempio:

Opzioni -Index + FollowSymLinks


3

Questa non è una risposta, solo la mia esperienza:

Sul mio Ubuntu 12.04 apache2, non ho trovato Indexesin apache2.conf o httpd.conf, per fortuna l'ho trovato in sites-available/default. Dopo averlo rimosso, ora non vede l'elenco delle directory. Potrebbe doverlo fare per sites-available/default-ssl.


2

Apri il tuo file .htaccess e inserisci il seguente codice in

Options -Indexes

Assicurati di premere il tasto INVIO (o il tasto INVIO se usi un Mac) dopo aver inserito le parole "Opzioni -Index" in modo che il file termini con una riga vuota.


2

Aggiungi questo nel tuo file .htaccess:

Options -Indexes

Se non funziona per qualsiasi motivo, prova questo nel tuo file .htaccess:

IndexIgnore *

1

Per completare la risposta di @ GauravKachhadiya:

IndexIgnore *.jpg

significa "nascondere solo i file di estensione .jpg dall'indicizzazione.

La direttiva IndexIgnore utilizza l'espressione jolly per abbinare directory e file.

  • un carattere a stella, corrisponde a tutti i caratteri in una stringa, ad es.

    IndexIgnore *

O se vuoi nascondere file spaziali, nell'elenco delle directory, allora possiamo usare

IndexIgnore *.php

* .php => corrisponde a una stringa che inizia con qualsiasi carattere e termina con .php

L'esempio sopra nasconde tutti i file che terminano con .php


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.