borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
Compartir esta página

Un .htaccess para todos

Un programador web organizado utilizará habitualmente dos servidores:

Servidor de desarrollo (local)
La máquina donde se programa, se depura y se cacharrea. A menudo es el propio PC del autor.
Servidor de producción (Internet)
La máquina donde está publicada la página. Es donde un fallo puede ser disfrutado por miles de desconocidos.

En estas condiciones es complicado mantener un archivo .htaccess ya que las directivas que funcionan en desarrollo pueden no hacerlo en producción y viceversa. Los respectivos servidores Apache pueden tener módulos diferentes o tratarse de versiones diferentes. También podemos necesitar configuraciones distintas. Puesto que el archivo está situado en la raíz de la web y no puede moverse ni renombrarse, es engorrosisímo mantener dos copias, gestionarlas aparte del resto de archivos y conseguir no romper nunca nada.

Una solución cómoda y elegante

Lo que haremos será tener un único archivo .htaccess con las directivas para ambos servidores y diferenciar entre ambas a la hora de aplicarlas con la directiva <IfDefine>.

El primer paso es añadir un parámetro a uno de los servidores para poderlo distinguir. Lo haremos en el de desarrollo, entre otros motivos porque es en el que podemos trastear. Esto se consigue con la opción -D de Apache (ojo, debe ser una D mayúscula). Y me refiero a que debemos usar esa opción como argumento en línea de comandos para el ejecutable de Apache:

httpd -Dparámetro

En nuestro caso, el parámetro se va a llamar servidor-de-desarrollo. Que no cunda el pánico: es más fácil de lo que parece.

Servicio de Windows

Si el servidor web se ejecuta como servicio de Windows las opciones se especifican en el registro. Abrimos el editor del registro con un usuario con privilegios de administrador: Inicio→Ejecutar→regedit.

¡Ojito! Regedit es la herramienta que pone en tu mano la forma más elegante de dañar el sistema operativo. Úsala bajo tu exclusiva responsabilidad y no toques nada si no estás seguro.

Localizamos la clave Parameters correspondiente. En el caso de Apache 2 sería HKLM\ SYSTEM\ CurrentControlSet\ Services\ Apache2\ Parameters.

Modificamos el valor ConfigArgs y agregamos los argumentos adicionales. Podemos usar retornos de carro para poner cada cosa en una línea y que quede más claro (milagrosamente funciona).

-D
servidor-de-desarrollo

Captura de pantalla de regedit con el valor ConfigArgs abierto

Los cambios se harán efectivos al reiniciar el servicio. Si instalaste Apache con el instalador encontrarás un icono etiquetado Restart en el grupo de programas de Apache (sí, hombre, en Inicio→Programas→Apache HTTP Server). Si no, puedes gestionar el servicio como cualquier otro servicio de Windows (Inicio→Programas→Herramientas administrativas→Servicios).

Daemon de Linux

El método para Red Hat, Fedora y distros de la familia se reduce a editar el archivo /etc/sysconfig/httpd:

# # To pass additional options (for instance, -D definitions) to the # httpd binary at startup, set OPTIONS here. # OPTIONS=-Dservidor-de-desarrollo

Es muy importante que no haya espacios después de la -D. Reiniciamos el daemon y listo:

service httpd restart

Nota: Lamentablemente no soy usuario del 99% de las distribuciones de Linux. Si quieres contarme cómo se hace en tu distro lo añadiré aquí con crédito a su autor.

Finalmente, el archivo .htaccess

Una vez configurado el servidor (en Windows o Linux, que lo mismo da), ya podemos utilizar el identificador servidor-de-desarrollo con la directiva <IfDefine> para crear contenedores donde aplicar directivas de forma selectiva. Un ejemplo:

# # Directivas comunes # AddDefaultCharset UTF-8 # # Directivas para el servidor local # <IfDefine servidor-de-desarrollo>     Options +Indexes </IfDefine> # # Directivas para el servidor de Internet # <IfDefine !servidor-de-desarrollo>     Options -Indexes </IfDefine>

Esta página ha sido impresa el sábado 23 de septiembre de 2017 (02:23:02 +0200) desde http://borrame.com/documentacion/apache/un-.htaccess-para-todos.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2017 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com