<-
Apache > Servidor HTTP > Documentacin > How-To / Tutoriales

Tutorial del Servidor Apache HTTP: Ficheros .htaccess 5nw6n

Idiomas disponibles: pt-br

Los ficheros .htaccess facilitan una forma de realizar cambios en la configuracin en contexto directorio.

 Apache!

Consulte tambin 382u41

top

Ficheros .htaccess 233z54

Debera evitar usar ficheros .htaccess completamente si tiene al fichero de configuracin principal de httpd. Usar ficheros .htaccess ralentiza su servidor Apache http. Cualquier directiva que pueda incluir en un fichero .htaccess estar mejor configurada dentro de una seccin Directory, tendr el mismo efecto y mejor rendimiento.
top

Qu son/Cmo usarlos 696ic

Los ficheros .htaccess (o "ficheros de configuracin distribuida") facilitan una forma de realizar cambios en la configuracin en contexto directorio. Un fichero, que contiene una o ms directivas, se coloca en un documento especfico de un directorio, y estas directivas aplican a ese directorio y todos sus subdirectorios.

Nota: 3u4a1h

Si quiere llamar a su fichero .htaccess de otra manera, puede cambiar el nombre del fichero usando la directiva AccessFileName. Por ejemplo, si usted prefiere llamar al fichero .config, entonces puede poner lo siguiente en el fichero de configuracin de su servidor:

AccessFileName ".config"

Generalmente, los ficheros .htaccess usan la misma sintxis que los AllowOverride para que se permita esa directiva.

Por ejemplo, si busca en la documentacin la directiva Override muestra FileInfo. De este modo, debe tener al menos AllowOverride FileInfo para que esta directiva se aplique en ficheros .htaccess.

Ejemplo: 6x4m23

Context: server config, virtual host, directory, .htaccess
Override: FileInfo

Si no est seguro de cundo, una directiva en concreto, se puede usar en un fichero .htaccess, consulte la documentacin para esa directiva, y compruebe la lnea Context buscando ".htaccess".

top

Cuando (no) usar ficheros .htaccess c4q47

Generalmente, solo debera usar ficheros .htaccess cuando no tiene al fichero principal de configuracin del servidor. Hay, por ejemplo, una creencia errnea de que la autenticacin de debera hacerse siempre dentro de ficheros .htaccess, y, ms recientemente, otra creencia errnea de que las directivas de mod_rewrite deben ir en ficheros .htaccess. Esto sencillamente no es el caso. Puede poner las configuraciones de autenticacin de en la configuracin principal del servidor, y esto es de hecho, el mtodo preferido de configurar Apache. Del mismo modo, las directivas mod_rewrite funcionan mejor, en muchos sentidos, en el fichero de configuracin principal del servidor.

Los ficheros .htaccess deberan usarse cuando su proveedor de contenidos le permite hacer modificaciones de configuracin en contexto directorio, pero usted no tiene de root en el servidor. En el caso de que el no est dispuesto a hacer cambios frecuentes en la configuracin, puede que sea necesario permitir a s individuales realizar estos cambios de configuracin en ficheros .htaccess por ellos mismos. Lo cual ocurre a menudo, por ejemplo, en casos donde los ISP estn albergando mltiples sitios web de en una sola mquina, y quieren que sus s tengan la posibilidad de modificar sus configuraciones.

Aun as, generalmente, el uso de ficheros .htaccess debera evitarse cuando sea posible. Cualquier configuracin que considerara poner en un fichero .htaccess, puede usarse con la misma efectividad en una seccin <Directory> en el fichero de configuracin del servidor.

Hay dos razones para evitar el uso de ficheros .htaccess.

La primera es el rendimiento. Cuando AllowOverride est configurado para permitir el uso de ficheros .htaccess, httpd buscar ficheros .htaccess en cada directorio. As, permitiendo ficheros .htaccess provoca una prdida de rendimiento, incluso aunque no los use! Adems, los ficheros .htaccess se cargan cada vez que se solicita un documento.

Adems tenga en cuenta que httpd debe buscar ficheros .htaccess en todos los directorios de mayor jerarqua, para poder terner la lista completa de directivas que debe aplicar. (Vea la seccin sobre Cmo se aplican las directivas.) As, si se solicita un fichero de un directorio /www/htdocs/example, httpd debe buscar los siguientes ficheros:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

De esta manera, por cada a un fichero de ese directorio, hay 4 s adicionales al sistema de ficheros, incluso si ninguno de esos ficheros est presente. (Tenga en cuenta que este caso solo se dara si los ficheros .htaccess estn activados en /, que generalmente no es el caso.).

En el caso de las directivas Gua de Rewrite para un mayor detalle sobre este tema.

La segunda consideracin es de seguridad. Estar permitiendo que s modifiquen la configuracin del servidor, lo cual puede dar lugar a cambios sobre los que usted no tendr ningn control. Medite profundamente si debe dar a sus s ese privilegio. Adems tenga en cuenta que dar a los s menos privilegios de los que necesitan dar lugar a ms peticiones de soporte. Asegrese de que le indica a sus s claramente el nivel de privilegios que les est dando. Especificando exactamente cmo ha configurado AllowOverride, e invteles a revisar la documentacin relacionada, lo cual le ahorrar bastantes confusiones ms adelante.

Tenga en cuenta que esto es equivalente por completo a poner un fichero .htaccess en un directorio /www/htdocs/example con una directiva, y poner la misma directiva en una seccin Directory <Directory "/www/htdocs/example"> en su configuracin principal del servidor:

Fichero .htaccess en /www/htdocs/example:

Contenido de fichero .htaccess en /www/htdocs/example 1c5p3l

AddType text/example ".exm"

Seccin de su fichero apache2.conf 2q5f2v

<Directory "/www/htdocs/example">
    AddType text/example ".exm"
</Directory>

Aun as, poniendo sta en el fichero de configuracin dar como resultado una menor prdida de rendimiento, y como la configuracin se carga una vez cuando el httpd arranca, en lugar de cada vez que se solicita un fichero.

El uso de ficheros .htaccess puede desactivarse por completo configurando la directiva AllowOverride a none:

AllowOverride None
top

How directives are applied 2xc5k

Las directivas de configuracin que se encuentran en el fichero .htaccess se aplican al directorio en el que el fichero .htaccess se encuentra, y a todos sus subdirectorios. Sin embargo, es importante recordar que puede haber otros ficheros .htaccess en directorios previos. Las directivas se aplican en el orden en el que se encuentran. Por lo tanto, un fichero .htaccess puede sobrescribir directivas que se encuentran en ficheros .htaccess que se encuentran en directorios previos del rbol de directorios. Y estos, en cambio, pueden haber sobrescrito directivas que se encontraban ms arriba, o en el fichero principal de configuracin del servidor mismo.

Ejemplo:

En el directorio /www/htdocs/example1 tenemos un fichero .htaccess que contiene lo siguiente:

Options +ExecCGI

(Nota: debe terner "AllowOverride Options" configurado para permitir el uso de la directiva "Options" en ficheros .htaccess files.)

En el directorio /www/htdocs/example1/example2 tenemos un fichero .htaccess que contiene:

Options Includes

Por este segundo fichero .htaccess, en el directorio /www/htdocs/example1/example2, la ejecucin de CGI execution no est permitida, porque solo se ha definido Options Includes, que sobrescribe completamente una configuracin previa que se pudiera haber definido.

Incorporando el .htaccess en los ficheros de configuracin principal 5s312e

Como se ha comentado en la documentacin en las AllowOverride. Por ejemplo, para prevenir la ejecucin de un script mientras se permite cualquier otra cosa en .htaccess puede usar:

<Directory "/www/htdocs">
    AllowOverride All
</Directory>

<Location "/">
    Options +IncludesNoExec -ExecCGI
</Location>
Este ejemplo asume que su DocumentRoot es /www/htdocs.
top

Ejemplo de Autenticacin 2h4en

Si salt directamente a esta parte del documento para averiguar como hacer la autenticacin, es important que tenga en cuenta una cosa. Hay una creencia errnea de que necesita usar ficheros .htaccess para configurar autenticacin con contrasea. Este no es el caso. Colocar las directivas de autenticacin en una seccin ms arriba una explicacin de cuando debera y cuando no debera usar ficheros .htaccess.

Dicho esto, si todava cree que debe usar el fichero .htaccess, podr ver que una configuracin como la que sigue podra servirle.

Contenido del fichero .htaccess:

AuthType Basic
AuthName " Required"
AuthFile "/www/s/.file"
AuthGroupFile "/www/s/group.file"
Require group s

Tenga en cuenta que AllowOverride AuthConfig debe estar habilitado para que estas directivas tengan algn efecto.

Por favor vea el tutorial de autenticacin para una explicacin ms completa de la autenticacin y la autorizacin.

top

Ejemplo de Server Side Includes 6o2n3u

Otro uso comn de ficheros .htaccess es activar Server Side Includes para un directorio en particular. Esto puede hacerse con las siguientes directivas de configuracin, colocadas en un fichero .htaccess y el directorio deseado:

Options +Includes
AddType text/html "shtml"
AddHandler server-parsed shtml

Tenga en cuenta que AllowOverride Options y AllowOverride FileInfo deben estar activadas para que estas directivas tengan efecto.

Por favor vea el tutorial de SSI para una explicacin ms completa de server-side includes.

top

Reglas de Rewrite en ficheros .htaccess 1o3z2j

Cuando use RewriteRule en ficheros .htaccess, tenga en cuenta que el contexto directorio cambia las cosas un poco. En concreto, las reglas son relativas al directorio actual, en lugar de serlo de la peticin de URI solicitada originalmente. Considere los siguientes ejemplos:

# En apache2.conf
RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"

# En .htaccess en el directorio raz
RewriteRule "^images/(.+)\.jpg" "images/$1.png"

# En .htaccess en images/
RewriteRule "^(.+)\.jpg" "$1.png"

En un .htaccess en cualquier directorio del DocumentRoot, la barra ("/") inicial se elimina del valor facilitado a RewriteRule, y en el subdirectorio images, se elimina /images/ tambin de este valor. As, su expresin regular necesita omitir tambin esa parte.

Consulte la documentacin de mod_rewrite para ms detalles al usar mod_rewrite.

top

Ejemplo de CGI 2w1v5j

Finalmente, puede que quiera usar un fichero .htaccess para permitir la ejecucin de programas CGI en un directorio en particular. Esto se puede implementar con la siguiente configuracin:

Options +ExecCGI
AddHandler cgi-script "cgi" "pl"

Alternativamente, si quiere considerar como programas CGI todos los ficheros de un directorio concreto, esto se puede conseguir con la siguiente configuracin:

Options +ExecCGI
SetHandler cgi-script

Tenga en cuenta que AllowOverride Options y AllowOverride FileInfo deben estar ambas activadas para que estas directivas tengan efecto.

Por favor vea el tutorial CGI para mayor detalle sobre programacin y configuracin de CGI.

top

Resolucin de problemas u112

Cuando pone directivas en un fichero .htaccess y no obtiene el efecto deseado hay una serie de cosas que pueden haber ido mal.

El problema ms comn es que AllowOverride no est configurada para que sus directivas puedan surtir efecto. Asegrese de que no tiene AllowOverride None configurado para el directorio en cuestin. Una buena forma de probar esto es poner "basura" en su fichero .htaccess y recargar la pgina. Si no se genera un error en el servidor, casi seguro que tiene configurado AllowOverride None.

Si, por otro lado, obtiene errores de servidor al intentar acceder a documentos, compruebe el log de errores de httpd. Seguramente le indiquen que la directiva en uso en su fichero .htaccess no est permitida.

[Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here

Esto indicar que o bien ha usado una directiva que no se permite nunca en ficheros .htaccess, o que simplementa no tiene AllowOverride configurado a un nivel suficiente para la directiva que ha usado. Consulte la documentacin para esa directiva en particular para determinar cual es el caso.

Alternativamente, puede que le indique que hay un error de sintaxis en el uso de la propia directiva.

[Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters

En este caso, el mensaje de error debera ser especfico para el error de sintaxis concreto que ha cometido.

Idiomas disponibles: pt-br

top

Comentarios 3f6r1x

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our s if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.