denegar la lista de directorios con htaccess


103

Tengo una carpeta, por ejemplo: /public_html/Davood/ y demasiados sub carpeta en carpeta, por ejemplo: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

Quiero agregar un archivo htaccess en /public_html/Davood/Para denegar la lista de directorios /Davoody subcarpetas, ¿es posible?


3
¡No veo por qué Options All -Indexesno funcionó como en pocas respuestas!
Viernes

1
@ Fr0zenFyr depende de la configuración del servidor web, si AllowOverride Allfunciona
DJafari

Respuestas:



69

Intente agregar esto al .htaccessarchivo en ese directorio.

Options -Indexes

Esto tiene más información.


Sí, pensé: los índices de directorios desactivados, en cambio, bloquea todo el contenido de la carpeta ... ¿Alguien sabe por qué?
Michael Fever

Todo lo que puedo pensar es que hay algún problema con la configuración del servidor. Intente habilitar el rewritemódulo y la configuración del directorio en AllowOverride All. Si todo eso ya está en su lugar, y lo que comentaste es cierto, debo tener la suerte de poder Options All -Indexestrabajar en cada proyecto en diferentes servidores.
Fr0zenFyr

35

Si Options -Indexesno funciona como sugirió Bryan Drewery, puede escribir un método recursivo para crear archivos index.php en blanco.

Coloque esto dentro de su carpeta base que desea proteger, puede nombrarlo como quiera (recomendaría index.php)

<?php

recurse(".");

function recurse($path){
    foreach(scandir($path) as $o){
        if($o != "." && $o != ".."){
            $full = $path . "/" . $o;
            if(is_dir($full)){
                if(!file_exists($full . "/index.php")){
                    file_put_contents($full . "/index.php", "");
                }
                recurse($full);
            }
        }
    }
}

?>

Estos archivos index.php en blanco se pueden eliminar o sobrescribir fácilmente, y evitarán que sus directorios sean enumerables.


8
Aunque un archivo vacío no es tan importante, una mejor solución podría ser usar enlaces simbólicos , de esa manera se ahorra un poco de espacio, y solo necesitaría modificar 1 archivo si eligiera mostrar algún tipo de mensaje uniforme en lugar de una página en blanco.
daalbert

18

Para mostrar el error Prohibido, incluya estas líneas en su archivo .htaccess:

Options -Indexes 

Si queremos indexar nuestros archivos y mostrarlos con alguna información, entonces usamos:

IndexOptions -FancyIndexing

Si queremos que no se muestre alguna extensión en particular, entonces:

IndexIgnore *.zip *.css

1
.httaccesso .htaccess?
NaveenDA

8

Opciones: los índices funcionan perfectamente para mí,

aquí está el .htaccessarchivo:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes <---- This Works for Me :)
    </IfModule>


   ....etc stuff

</IfModule>

Antes de : ingrese la descripción de la imagen aquí

Después :

ingrese la descripción de la imagen aquí


4

Hay dos maneras :

  1. usando .htaccess: Options -Indexes

  2. crear index.html en blanco


3
Options -Indexes

Tengo que intentar crear el archivo .htaccess de ese directorio actual que quiero no permitir la lista de índices de directorios. Pero, lo siento, no sé sobre recursivo en el código .htaccess.

Intentalo.


2

De acuerdo en que

Options -Indexes

debería funcionar si el servidor principal está configurado para permitir anulaciones de opciones, pero si no, esto ocultará todos los archivos de la lista (por lo que cada directorio aparece vacío):

IndexIgnore *

2

Opciones: índices devuelve un error prohibido 403 para un directorio protegido. El mismo comportamiento se puede lograr usando el siguiente redireccionamiento en htaccess:

RedirectMatch 403 ^/folder/?$ 

Esto devolverá un error prohibido para example.com/folder/ .

También puede usar mod-rewrite para prohibir una solicitud de carpeta.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Si su .htaccess está en la carpeta que se va a prohibir, patrón de cambio de RewriteRule de ^ carpeta /? $ A ^ $ .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.