2011-12-30 22 views
45

He estado limpiando mi proyecto últimamente. Tengo un .htaccess principal en el directorio raíz y otros 6. 5 de ellos corrieron Options -Indexes que no vi ningún punto de permitir que cualquier Directorio mirara tan movido al principal. así que ahora solo tengo 2 archivos .htaccess. el principal y uno en /system que sostienehtaccess <Directory> negar todo

# Block External Access 
deny from all 

así que quería correr en /system que sólo desde dentro de la principal. Así que eliminé el que está en/system y agregué

# Block External Access 
<Directory "/system/"> 
deny from all 
</Directory> 

a mi archivo .htaccess principal dejando 1!

pero ahora me sale un error interno del servidor

El servidor encontró un error interno o mala y era incapaz de completar su solicitud.

Póngase en contacto con el administrador del servidor, webmaster @ localhost y para informarle de la hora en que se produjo el error, y todo lo que pudo haber causado el error.

Más información sobre este error puede estar disponible en el error del servidor log.

Apache/2.2.17 (Ubuntu) Server en 10.0.1.5 puerto 80

El objetivo es bloquear la lectura de todos los archivos en/system y es sub directorio de permitir la visualización, sino de todo lo demás, todo desde un .htaccess archivo para todo el proyecto ¿Alguna idea sobre cómo puedo solucionar esto? Hice algunas búsquedas en Google pero no pude sacar nada.

Respuesta

74

No puede usar el Directory directive en .htaccess. Sin embargo, si se crea un archivo .htaccess en el directorio/sistema y colocar el siguiente en el mismo, obtendrá el mismo resultado

#place this in /system/.htaccess as you had before 
deny from all 
+3

Sí. Tenía un .htaccess colocado en/system antes. Solo estaba tratando de tener solo uno para todo el proyecto. Supongo que no puedo y tendré que hacerlo de esa manera. – Keverw

+0

para usuarios de Windows, asegúrese de que el nombre del archivo sea exactamente '.htaccess' guardando-como el archivo de algún editor de texto porque el explorador de Windows no le permite eliminar nombres de archivos. fue un problema para mí –

1

Se puede utilizar desde el directorio raíz:

RewriteEngine On 
RewriteRule ^(?:system)\b.* /403.html 

O:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden'); 
9

También puede usar la directiva RedirectMatch para denegar el acceso a una carpeta.

para denegar el acceso a una carpeta, puede utilizar el siguiente RedirectMatch en .htaccess:

RedirectMatch 403 ^/folder/?$ 

Esto prohibir a un acceso externo a/carpeta/por ejemplo: http://example.com/folder/ devolverá un error 403 prohibido.

Para denegar el acceso a todo el interior de la carpeta, puede utilizar esto:

RedirectMatch 403 ^/folder/.*$ 

Esto bloqueará el acceso a toda la carpeta por ejemplo: http://example.com/folder/anyURI devolverá una respuesta de error 403 al cliente.