• • • Colección privada de recortes de código y documentación para programación web
[Sí, aún estamos en pruebas; ¿por?]
Un programador web organizado utilizará habitualmente dos servidores:
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.
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.
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

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).
El método para Red Hat, Fedora y distros de la familia se reduce a editar el archivo /etc/sysconfig/httpd:
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.
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:
Esta página ha sido impresa el domingo 6 de julio de 2008 (22:52:43 +0200) desde http://bits.demogracia.com/documentacion/apache/un-.htaccess-para-todos.html, contenía HTML válido con CSS fresquito la última vez que lo miré y no debería tener flatas de ortografía.
Demogracia Bits no tiene absolutamente ninguna relación con Demogracia, salvo el nombre, el dominio punto com y que el autor es el mismo.
© 2005-2008 by Álvaro G. Vicario (alvaro.es) ¤ Burgos (España) ¤ http://bits.demogracia.com/