2009-09-05 18 views
19

¿Es posible ocultar las carpetas en mi carpeta raíz? ¿Por si desaparecía mi index.php?Ocultar carpetas con .htaccess

¿Podría mostrar también el error 404 no encontrado si alguien los solicita?

Respuesta

20
IndexIgnore * 

Lo anterior evitaría que se enumeren todos los archivos. Aquí * actúa como un comodín. Puede reemplazarlo con algo más específico, si es necesario.

+0

reemplace '*' ¿cómo? Supongamos que tengo 3 archivos y 1 carpeta que quiero ocultar ('archivo1.jpg, algunos.pdf, else.html, i-am-a-carpeta') – Omar

+0

IndexIgnore no impide el acceso a ubicaciones de archivos conocidos dentro de la carpeta que protege Un htaccess con: 'order allow, deny' ' deny from all' haría un mejor trabajo. – GTodorov

33

Lo que se quiere es probablemente

Options -Indexes 

que se acaba de dar un error 404 si no se encuentra el archivo DirectoryIndex.

+5

Creo que es más bien un 403. – Gumbo

9

Como se ha mencionado por duskwuff, lo que necesita es

Options - Indexes 

Esto causará un error de 403 prohibida en ese directorio en particular. Por tanto, proporcionar una página de error personalizada que necesitará

ErrorDocument 403 myErrorPage.html 

Esperanza esto ayuda

+0

Esta respuesta tardó 5 horas, pero debería ser la respuesta aceptada.Esto con un archivo de índice no producirá un error, que luego puede manejar o utilizar el servidor predeterminado uno. La respuesta aceptada simplemente ocultará las carpetas en la página de vista de directorio. Por lo tanto, produce un falso positivo. Publicación anterior pero en los mejores resultados de google. – Mayhem

0

Para mí siempre trabaja con la adición de

<Directory "/var/www/yourfolder"> IndexIgnore * </Directory> 

en el archivo/etc/apache2/sites-available/predeterminado

1

Esta fue mi solución preferida para el mismo problema (esto muestra un acceso denegado en lugar de 404):

<files "/path/to/single/file/or/folder"> 
    order allow,deny 
    deny from all 
</files> 

Esto también le da la opción de dar acceso a cierta IP (en este caso se niegan de acceso a todos)

El "/ ruta/a/sola carpeta/archivo/o /" se puede sustituir por regex si quieres usar un patrón en su lugar. De lo contrario, debe usar varios bloques para cada archivo o carpeta específicos a los que desee bloquear el acceso.

1

Si realmente desea mostrar un error 404 subcarpeta (s), pruebe lo siguiente en /.htaccess:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [R=404,L] 

Si un existente /folder o /subfolder se solicita, la regla anterior se reescribirla a /404.

0

Entiendo esto agregando un index.html en todas las carpetas a las que no quiero acceder. La página index.html contiene una sola línea con el siguiente header("Location:thepageiwanttoshown.html"). De esta forma, si el usuario visita accidentalmente las carpetas restringidas, será redirigido sobre la marcha. Espero que ayude

Cuestiones relacionadas