Conjuntamente con las formas crecientes, vienen nuevas maneras de hacer cosas sin deshacerse de las viejas formas de hacer las cosas. Tengo un problema con mi computadora en gnujobs.com. Basicamente lo que necesito es reenviar cada petición de 'http://www.tcu-inc.com/mark/articles' a 'http://www.gnujobs.com/Articles'. He intentado la directiva de Apache de Redirect pero no me funcionó. Así, que tuve que averiguar por que no funcionaba y si había alguna alternativa por otro camino.
La cosa bonita de usar un script en Perl, es que no necesitas recompilar el servidor Apache. Sólo debes cambiar la configuración de una forma ligera. No necesitas instalar mod_perl, pero si lo haces, la configuración puede ser ligeramente diferente si quieres hacer un almacenamiento temporal del script. Además que esto se puede hacer en cualquier lenguaje de programación, no nada más en Perl.
Tuve que modificar la configuración de Apache ligeramente:
<VirtualHost 206.21.120.103> ServerAdmin info@gnujobs.com ServerName www.tcu-inc.com DocumentRoot /www/htdocs/ ScriptAlias /mark/articles "/www2/TCU.pl" </VirtualHost>
La parte clave es la directiva de ScriptAlias. Redireciona todas las salidas al script de perl TCU.pl
Y así se vió el script en Perl,
#!/usr/bin/perl
print "Location: http://www.gnujobs.com$ENV{'REQUEST_URI'}";
$ENV{'REQUEST_URI'} es la parte clave aquí. Es una variable de ambiente
que es igual al archivo que se le pide al servidor de web www.tcu-inc.com.
El script de perl toma el archivo que se pide y hace que el browser se
redirija al nuevo site web.
También me aseguré de hacer de correr el comando en UNIX "chmod 755 TCU.pl"
para asegurarme que fuese ejecutable.
Debes compular mod_rewrite dentro de Apache para usar esta opción. Mod_rewrite es un módulo que "provee un motor de reglas y directivas para reescribir URL's que se pidan de forma rápida". Es un módulo muy poderoso, y es escencial para aprender a usarlo si realmente quieres ser un verdadero webmaster o programador web. No es escencial que lo uses, pero como sabes puedes presentarle las opciones a tu jefe cuando quieres quieras hacer cosas raras con tu servidor Web.
Compilé mod_rewrite dentro de apache y apliqué esta configuración en el archivo httpd.conf:
<VirtualHost 206.21.120.103>
ServerAdmin info@gnujobs.com
ServerName www.tcu-inc.com
DocumentRoot /www/htdocs/
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.tcu\-inc\.com$
RewriteRule ^(/articles)(.*) http://www.gnujobs.com/Articles$2 [R]
</VirtualHost>
RewriteCond pone la condición para la cual vamos a cual vamos a user mod_rewrite, la cual básicamente le dice al servidor web que ponga
atención que si www.tcu-inc.com es la base del nombre del sitio
que esté siendo usado. RewriteRule toma todas las condiciones (todo lo
que esté en www.tcu-inc.com) y le dice que si el archivo solicitado
comienza con "/articles" que lo redirija a www.gnujobs.com. Lo siguiente, "$2", corresponde a "(.*)". Lo demás referenciado después
del archivo pedido después de "/articles" es igual a "(.*). [R] quiere
decir: "Toma la igualación de la condición y redirígela".
<VirtualHost 206.21.120.103> ServerAdmin info@gnujobs.com ServerName www.tcu-inc.com DocumentRoot /www/htdocs/ Redirect /mark/articles http://www.gnujobs.com/Articles </VirtualHost>
Mark trabaja como consultor independiente donando tiempo a causas como GNUJobs.com, escribiendo articulos y escribiendo software libre.
Allan Baker,quien tradució este articulo, es miembro del Grupo de Usuarios Linux del ITESM Campus Estado de México que cumple tres años de existencia.