Guía de Manejo de Archivos .htaccess

Introducción

Los archivos .htaccess (acceso de hiper-texto) son "archivos de configuración de directorios" y proporcionan un modo de realizar cambios de configuración sobre una base por directorios. Todo lo que usted puede incluir en el archivo .htaccess está determinado por la directiva AllowOverride instalada por el proveedor de hosting.

La característica AllowOverride especifica, por categorías, lo que harán las directivas que se encuentren en un archivo .htaccess. De este modo, el funcionamiento de las directivas que usted utilice en un archivo .htaccess dependerá en gran medida de cómo haya sido configurado el servidor por su proveedor de hosting. La mayoría de hostings permiten ciertas directivas .htaccess.

Las directivas usadas por el soporte SEF de URLs normalmente están permitidas. No obstante no todos los hostings permitirán configurar php_flags, por ejemplo, para cambiar la configuración de register_globals.

En general, usted nunca necesitaría utilizar archivos .htaccess, a menos que no tenga acceso al archivo principal de configuración del servidor. Habitualmente no tendrá acceso a este, a menos que esté utilizando su propio servidor.


Uso de Archivos .htaccess

El uso de archivos .htaccess provoca una reducción del rendimiento. Cuando un hosting tiene configurada la característica AllowOverride para permitir el uso de archivos .htaccess, Apache buscará en cada directorio tratando de encontrar archivos .htaccess (Apache intenta determinar si usted utiliza archivos .htaccess o no). Cada vez que se haga una llamada a su sitio también se cargará el archivo .htaccess. Además de esto, Apache tratará de encontrar posibles archivos .htaccess en directorios superiores al que está llamando.

La manera en que trabaja es básicamente la siguiente:
Usted pone un archivo .htaccess en la raíz de su sitio y otro en un directorio del componente. Cuando se hace una llamada a este componente, Apache busca en el directorio del componente .htaccess y también en uno mas arriba, en la raíz.
Las directivas se aplican en el orden en que son encontradas por Apache. Por lo tanto, un archivo .htaccess en un directorio particular puede sobreescribir las directivas encontradas en los archivos .htaccess situados más arriba en el árbol del directorio. Y éstos a su vez, pueden sobreescribir las directivas encontradas más arriba o en el propio archivo de configuración principal del servidor.
Apache busca directivas en cualquier archivo .htaccess del directorio particular que ha sido llamado y en los que están más arriba, para determinar las directivas que utilizará cuando procese la petición de llamada de la página de su sitio.

Por tanto, entenderá que cada directiva añadida a un archivo .htaccess incrementa la carga del servidor. Si tiene un archivo .htaccess que incluye muchas directivas y lo coloca en la raíz del sitio, probablemente observará una gran reducción en el rendimiento. No sólo se estáran incrementando los accesos al sistema de archivos, sino que Apache también tiene que procesar todo lo que le estén indicando las directivas.


Configurar register_globals con .htaccess

Hablemos ahora de uno de los asuntos más candentes. Usar el archivo .htaccess para desactivar la característica register_globals.

Si desea activar o desactivar la carasterística register_globals en su sitio web, no será necesario cambiar nada en el hosting. Si un hosting tiene activado el register_globals del PHP, a menudo usted podrá rescribir fácilmente esta característica con un simple cambio en su archivo .htaccess en la raíz del sitio. Use una de las siguientes directivas, dependiendo si desea activar o desactivar register_globals. Nota: Esto funciona sólo si su proveedor de hosting ha permitido AllowOverrides en su cuenta.

Código:
php_flag register_globals on
php_flag register_globals off


Si esto no funciona, puede utilizar también:

Código:
php_value register_globals 1 (ON) or 0 (OFF)

Apache lo reconoce igual que las directivas señaladas arriba. Si utiliza esta directiva, su archivo php.info debe mostrar si register_globals está ON u OFF, dependiendo de la opción seleccionada.

Ahora, aquí está la parte delicada. Estas directivas trabajan SOLAMENTE en sitios que tienen el PHP corriendo como módulo de Apache, no como CGI. PHPSuExec funciona bajo CGI y en este caso configurar register_globals en .htaccess no funcionaría.

La gente que trabaja con Apache 1.x puede utilizar las directivas tal y cómo se describen arriba, pero la gente que trabaja con Apache 2.x puede necesitar utilizar la "estructura de directorio" (Esto dependerá nuevamente de cómo haya sido configurado su hosting).

Por "estructura de directorio" entendemos las etiquetas y . Estas etiquetas se utilizan para incluir un grupo de directivas que se aplicarán solamente al directorio nombrado y a los sub-directorios de dicho directorio. Debe asegurarse que usa la sintaxis correcta para su .

La directiva Php_flag no trabaja con Apache 2 (tanto para "ON" como "OFF"). En este caso debe utilizar las directivas 0 (OFF) o 1 (ON). Por ejemplo para desactivar register_globals en Apache 2.x, utilice lo siguiente:

Código:
php_value register_globals 0


Error 500 server

Si tiene errores de servidor, revise el registro de errores de su sitio. El registro probablemente mostrará una de estas cuestiones:
El directorio que ha utilizado no está permitido, por la forma en que esta configurado el servidor.
Tiene un error del sintaxis en el directorio.


¿Está trabajando .htaccess?

Esta es una cuestión que todo el mundo debería preguntarse, pero pocos lo hacen. NO asuma que su archivo .htaccess está trabajando del modo en que usted espera. Si desactivó register_globals usando una directiva .htaccess, revise su archivo php.info y asegúrese que indica que register_globals está desativado.

Si usted es un usuario experimentado, siempre puede incluir directicas erroneas en el archivo .htaccess y esperar un error del servidor. Si esto no ocurre, sabrá que su archivo .htaccess está siendo ignorado. No haga esto si no está completamente seguro de poder deshacer esta situación, ya que .htaccess sobrescribe la configuración para su espacio en el servidor y podría encontrarse con su cuenta completamente bloqueada (y tener que enfrentarse a su proveedor de hosting).

Si su proveedor de hosting no ha configurado AllowOverride para su espacio en el servidor, su archivo .htaccess será ignorado completamente y no obtendrá un mensaje de error del servidor en la situación anterior. Si cree que su archivo .htaccess está siendo ignorado, contacte con su hosting y pregunte si ha configurado AllowOverride, y si es así, que lo autorice.

La configuración de .htaccess es una área compleja y sólo hemos mencionado algunos de los problemas. Si tiene cualquier pregunta o sugerencia, publíquela en el foro de discusión.



09/07/2009      Visitas: 4491



  Volver