Versin 2.4 del Servidor HTTP Apache
Idiomas disponibles: pt-br
Los ficheros .htaccess
facilitan una forma de realizar cambios en la configuracin en contexto directorio.
Mdulos Relacionados | Directivas Relacionadas |
---|---|
.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.
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.
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
.
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".
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
:
AddType text/example ".exm"
<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
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.
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>
DocumentRoot
es /www/htdocs
.
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.
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.
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
.
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.
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