Apache: archivos .htaccess

Apache: archivos .htaccess

Los archivos .Htaccess son archivos de configuración de Apache, que permiten definir reglas en un directorio y en todos sus subdirectorios (que no tienen dicho archivo dentro). Se pueden utilizar para proteger un directorio con una contraseña, o para cambiar el nombre o la extensión de la página de índice, o para prohibir el acceso al directorio.

Interés de los archivos htaccess

Archivos .htaccess se puede utilizar en cualquier directorio o subdirectorio virtual.



Las principales razones para usar archivos .htaccess son:

  • Gestionar el acceso a determinados archivos.
  • Agrega un tipo de mímica.
  • Proteja el acceso a un directorio con una contraseña.
  • Proteja el acceso a un archivo con una contraseña.
  • Defina páginas de error personalizadas.

Principio de los archivos htaccess

El archivo .htaccess se coloca en el directorio en el que debe actuar. Por tanto, actúa sobre los permisos del directorio que lo contiene y de todos sus subdirectorios. Puede colocar otro archivo .htaccess en un subdirectorio de un directorio ya controlado por un archivo .htaccess. El archivo .htaccess en el directorio principal permanece en "actividad" hasta que se haya reescrito la funcionalidad.



La funcionalidad de estos archivos es muy poderosa, lea este tutorial detenidamente antes de comenzar a crear el suyo.

En Windows, es lógicamente imposible crear un archivo .htaccess, ya que Windows no le permitirá guardar el archivo como está. Aquí está el procedimiento a seguir:

  • Crea un archivo de texto "file.htaccess"
  • Cambie el nombre del archivo eliminando "archivo"

Nota: Dependiendo de su editor, también puede guardar el archivo directamente como .htaccess. En el Bloc de notas, basta con poner comillas alrededor del nombre del archivo, mientras que UltraEdit administra el nombre en sí.

Impedir el acceso a los recursos

Un archivo .htaccess se compone de dos secciones:

Una primera sección contiene las rutas a los archivos que contienen las definiciones de grupos y usuarios:

AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile /repertoire/de/votre/fichier/.FichierDeGroupe
AuthName "Acceso protegido"
AuthType Basic

  • AuthUserFile establece la ruta absoluta al archivo de contraseña.
  • AuthGroupFile establece la ruta absoluta al archivo de grupo.
  • AuthName hace que el navegador de Internet muestre: "Escriba su nombre de usuario y contraseña". Dominio: "Acceso protegido" »
  • AuthType Basic especifica que AuthUserFile debe usarse para la autenticación.

Una segunda sección contiene la definición de condiciones de acceso:


Require valid-user
{instrucciones de acceso para satisfacer}

  • require valid-user especifica que solo se permiten personas identificadas. También es posible especificar explícitamente el nombre de las personas autorizadas para identificarse: require user {username}

En Unix, la ruta a la contraseña y los archivos de grupo se ve así:



/repertoire1/repertoire2/.../.FichierDeMotDePasse

En Windows, la ruta contiene antislash (barra invertida) a diferencia de la notación Unix:

c: directorio1directorio2 .... PasswordFile

Proteger un directorio con contraseña

Esta es una de las aplicaciones más útiles del archivo. .htaccess porque permite definir de forma segura (mediante login y contraseña) los derechos de acceso a archivos por parte de determinados usuarios. La sintaxis es la siguiente:

AuthUserFile {ubicación del archivo de contraseña}
AuthGroupFile {ubicación del archivo de grupo}
AuthName "Acceso protegido"
AuthType Basic
Require valid-user

El comando AuthUserFile se utiliza para definir la ubicación del archivo que contiene los inicios de sesión y las contraseñas de los usuarios autorizados para acceder a un recurso determinado.

El comando AuthGroupFile se utiliza para definir la ubicación del archivo que contiene los grupos de usuarios autorizados a identificarse. Es posible anular esta declaración declarando el siguiente archivo: / dev / null.

Aquí hay un archivo de ejemplo .htaccess :

ErrorDocument 403 http://www.Idroid.com/accesrefuse.php
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile / dev / null
AuthName "Acceso seguro al sitio de CCM"
AuthType Basic
Require valid-user

El archivo de contraseña es un archivo de texto que debe contener en cada una de sus líneas el nombre de cada usuario seguido de dos puntos (:), luego la contraseña encriptada (solución recomendada) o en claro.

Aquí hay un ejemplo de un archivo de contraseña sin cifrar (aquí .PasswordFile)


JFPillou: Toto504
Damián: Robert (32)
Coma: Joe [leTaxi]

Aquí está el mismo archivo con contraseñas encriptadas:


JFPillou:$apr1$Si0.....$teyL5Y7BR4cHj0sX309Jj0
Damien:$apr1$TD1.....$sfPTHjoufoNsda4HsD1oL0
Párrafo: $ apr1 $ zF1 ..... $ wYKqRu2aVYlAEQnxVkly8.

.FichierDeMotDePasse es un archivo de texto simple que contiene los nombres de los usuarios seguidos de: luego la contraseña encriptada (o no) de este usuario. Este archivo de contraseña no debe colocarse en un directorio virtual de Internet (pero ¿qué podemos hacer si no tenemos un servidor de Internet y nuestro sitio está alojado por un tercero?). También es necesario tener la precaución de mezclar mayúsculas, minúsculas, números y símbolos en el nombre del archivo ...

Encriptar contraseñas

Apache proporciona una herramienta para generar fácilmente contraseñas cifradas (tanto en Windows como en Unix), es la utilidad htpasswd accesible en el subdirectorio bin de Apache.

La sintaxis de esta utilidad es la siguiente:

  • Para crear un nuevo archivo de contraseña:

    htpasswd -c {ruta al archivo de contraseña} usuario

  • Para agregar un nuevo usuario / contraseña a un archivo existente:

    htpasswd {ruta del archivo de contraseña} usuario

La contraseña se solicitará en la línea de comando con una confirmación.
Voici exemple de la ONU:

htpasswd -c /www/secure/.htpasswd JFPillou

Aquí hay una pequeña utilidad que le permite cifrar sus contraseñas en línea:

  • https://hostingcanada.org/htpasswd-generator/

Impedir el acceso a un directorio por parte de un dominio

La sintaxis para bloquear el acceso a un directorio por un dominio es la siguiente:

Permitir (todos, [lista de dominios])
Denegar (todos, [lista de dominios])
Orden (Permitir, Denegar o Denegar, Permitir)

Orden denegar, permitir
Denegar de ..LeNomDuDomaine.com

Todas las personas (solicitudes) provenientes del dominio .LeNomDuDomaine.com no podrán acceder a los recursos incluidos en el directorio y sus subdirectorios. El comando Orden se utiliza para especificar explícitamente que el comando Denegar cancelará efectivamente el efecto de Permitir y no al revés.

A continuación, se muestra un ejemplo de una restricción de acceso:

ErrorDocument 403 http://www.Idroid.com/accesrefuse.php
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile / dev / null
AuthName "Acceso seguro al sitio de CCM"
AuthType Basic
Para negar, permitir
deny from all
permitir a partir de 193.48.172.2
requiere usuario JFPillou

En este caso, el acceso solo será posible para el usuario de JFPillou desde la dirección IP 193.48.172.2 y con la contraseña correcta.

Impedir el acceso a un archivo en particular

De forma predeterminada, Apache aplica las restricciones del archivo .htaccess a todos los archivos del directorio en el que se encuentra, así como a todos los archivos de sus subdirectorios.

También es posible restringir el acceso a uno o más archivos en el directorio usando la etiqueta.

Aquí hay un ejemplo de restricción a los archivos admin.php y admin2.php:


AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile / dev / null
AuthName "Acceso seguro al sitio de CCM"
AuthType Basic
requiere usuario JFPillou


AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile / dev / null
AuthName "Acceso seguro al sitio de CCM"
AuthType Basic
requiere usuario JFPillou

Debe utilizar solo una etiqueta por archivo. De lo contrario, se informa el siguiente error en el archivo de registro de errores:

.htaccess: varios argumentos no admitidos (todavía).

A título informativo, conviene añadir que desde Apache 1.3, es recomendable utilizar la etiqueta en lugar de la etiqueta. Esta nueva etiqueta también admite un solo argumento, pero podemos procesar varios archivos gracias a una expresión regular.

Impedir que un dominio acceda a un tipo de archivo


Orden denegar, permitir
Denegar de .LeNomDuDomaine.com

Todas las personas (solicitudes) provenientes del dominio .LeNomDuDomaine.com no podrán acceder a las imágenes, cuya extensión es .png, incluidas en el directorio y sus subdirectorios.

Permitir el acceso a un grupo de archivos por dominio y país


Orden Permitir, Denegar
Denegar de todos
Permitir desde .phpspain.com
Permitir desde .com

Todas las personas (solicitudes) que provengan del dominio .phpspain.com o de dominios que terminen en .com podrán acceder a archivos que comiencen con php (por ejemplo, los archivos phpbonjour.html, phpaurevoir.vxf) incluidos en el directorio y su sub - directorios.

Proteger un directorio con un inicio de sesión

Este método (mucho menos seguro que el anterior) permite la autenticación de bajo nivel solo por el nombre del usuario. La sintaxis es la siguiente:

Requerir (usuario [lista de usuarios], grupo [lista de grupos], usuario válido)

Aquí hay una línea de ejemplo del archivo .htaccess:

Requiere usuario Damien Comma PumpPHP Jeff Rastapaye

Cualquier usuario que desee ingresar al directorio o uno de sus subdirectorios será rechazado a menos que se identifique dando un nombre que aparezca en la lista.

Obligar a un usuario a cumplir al menos una de las condiciones

Aquí está la sintaxis:

Satisfacer (cualquiera, todos)

Orden Permitir, Denegar
Denegar de todos
Permitir desde .comee.com
Requiere usuario Damien Comma PumpPHP Jeff Rastapaye
Satisfacer cualquiera

Esto significa que se bloqueará el acceso al directorio para todos excepto para las personas que se identifiquen y soliciten el dominio .comee.com.

Administrar tipos de archivos

Un tipo MIME es un conjunto de tipos de archivos estándar que permiten asociar una extensión de archivo determinada con una aplicación para automatizar el inicio de la aplicación.

Agregar un tipo Mime a un directorio

La sintaxis es la siguiente:

AddType (mímica / tipo [liste d'extension])

Aquí hay un ejemplo de la implementación del archivo. .htaccess :

AddType imagen / x-photoshop PSD
Aplicación AddType / x-httpd-php .php
Aplicación AddType / x-httpd-php .htm

El servidor enviará el archivo al navegador de Internet, indicándole que inicie el programa PhotoShop (si está instalado en su máquina) y le proporcione el archivo.

Por lo general, esto se usa para archivos que requieren un complemento en particular no reconocido por su navegador.
Este comando también le permite cancelar cualquier elemento predefinido. ¡Así que puede guardar un archivo .wav con una extensión .gif y decirle al navegador que considere los archivos .gif como archivos de audio!

En la práctica, por lo tanto, podemos usar este comando para ordenar a PHP que analice otras extensiones de archivo, .htm por ejemplo.

Forzar todos los archivos de un directorio a un tipo Mime

Aquí está la sintaxis a adoptar:

ForceType (mimo / tipo)

Por ejemplo, con la siguiente línea, todos los archivos del directorio que contiene el archivo .htaccess se considerarán archivos .jpg independientemente de su extensión:

ForceType imagen / jpg

¡Este tipo de control no se puede utilizar en los terminales!

Establecer extensiones de archivo predeterminadas

La sintaxis a seguir es:

DefaultType (mimo / tipo)

Por ejemplo

DefaultType texto / html

Esta opción le permite definir el comportamiento predeterminado del navegador cuando se trata de extensiones desconocidas para él.
Aquí tomará cualquier archivo desconocido (por ejemplo, 'hola', 'Rastapaye.phpspain') como documento HTML.

Personalización de mensajes de error.

Esta es una característica práctica porque te permite definir una página predeterminada para un tipo de error dado (Ver todos los códigos de error y su significado) ...

Esto permite, por un lado, guiar al usuario en lugar de mostrar la página de error del navegador banal, así como iluminar la navegación incluso en caso de error.

ErrorDocument (código de 3 dígitos [nombre de archivo o texto o URL])

Las siguientes dos líneas se utilizan para definir páginas de error personalizadas en caso de que el acceso a un documento esté prohibido o el documento no exista:

ErrorDocument 403 /erreurs/403.php
ErrorDocument 404 /erreurs/404.php

Esto le permite dar un mensaje de error personalizado reemplazando los archivos suministrados con el navegador.
Estos son algunos de los errores más comunes para personalizar:

  • 401 No autorizado: la persona no pasó la identificación correctamente.
  • 403 Prohibido: el servidor no tiene derecho a responder a su solicitud.
  • 404 No encontrado: el servidor no pudo encontrar el documento deseado.

Cambiar el archivo de índice predeterminado

El archivo de índice es el archivo que se muestra cuando no se define ningún nombre de archivo en la URL (por ejemplo, http://www.monserver.com/directory). Esto evita que el navegador enumere todos los archivos contenidos en el directorio (por razones de confidencialidad).

La sintaxis para realizar este tipo de operación es la siguiente:

DirectoryIndex (archivos)

Aquí hay una implementación de ejemplo:

DirectoryIndex index.php index.html index.phtml /erreurs/403.php

Cuando intente acceder al directorio sin especificar la página que se mostrará, Apache usará la directiva DirectoryIndex. Por lo general, de forma predeterminada, esta directiva apunta a index.html y luego a index.htm.

En el ejemplo anterior, Apache comenzará buscando index.php, luego index.html y luego index.phtml. Si no existe ninguno de estos tres archivos, se mostrará la página 403.php (ubicada en la raíz) para evitar listar el directorio.

Tutorial escrito por Jean-Espagnol Pillou y Douglas Six

Añade un comentario de Apache: archivos .htaccess
¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.