Subdominio dinámicos II

Como ya ha habido dos lectores que se han puesto en contacto conmigo por lo mismo: Como crear subdominios dinámicos, publico esta pequeña entrada aclaratoria. Esta solución me la ha pasado uno de mis lectores Manuel Fernández a quien se la ha pasado Diego Barreto, gracias a ambos.

Voy a aprovechar parte de mi post «Usando mod_rewrite para redireccionar subdominios» y los correos que me han llegado para crear un pequeño post «frankenstein» de copia-pega un poco arreglado. Si hay errores ruego me aviséis y trataré de corregirlos en la mayor brevedad posible.

En ocasiones queremos que de forma dinámica cualquier subdominio de nuestro dominio (por ejemplo: cualquiercosa.serhost.com) apunte a un sitio concreto dependiendo de algo que programemos nosotros. Para ello debemos redirigir todos los subdominios hacia nuestra IP, tener soportado mod_rewrite y poder crear un archivo .htaccess.

Por ejemplo, si al registrar al cliente PEPITO en un gestor, este podría entrar mediante la web: www.midominio.com/cliente.php?cod=pepito y puede ser interesante que también pueda entrar mediante: PEPITO.midominio.com por motivos de comodidad.

Primero hay que tener en cuenta que el servidor de hosting donde tengas tu dominio debe soportar varias cosas:

1) Tener cargado el mod_rewrite

2) Permitir el uso de ficheros .htaccess (pudiendo sobreescribir la configuración).

3) Permitir el uso de wildcard en el DNS así como tener un ScriptAlias *.tudominio.com en el virtualhost que esté tu dominio para que todas las peticiones de forma: http://(cualquiercosa).(tudominio.com) usen como documento principal el del directorio raíz de tu dominio (esto normalmente hay que solicitarlo a tu proveedor).

Bien, en caso de cumplir todo esto la tarea es simple, vamos a poner un fichero .htaccess en el raíz (tu directorio public_html, www ó html, es decir, donde tengas tu web, de modo que si pusieses http://(tudominio.com)/.htaccess pudieses acceder a él, en realidad en caso de hacerlo lo normal es que te devuelva un error 403: Prohibido, ya que apache por defecto no muestra ningún archivo que comience por .ht por motivos de seguridad).

El fichero .htaccess en cuestión debe contener algo del estilo:

(ejemplo que me pasó el webmaster de manufer.com.ar)

RewriteEngine on 
RewriteCond %{HTTP_HOST} !www\.manufer\.com\.ar$ [NC]
RewriteCond %{HTTP_HOST} (.*)\.manufer\.com\.ar$ [NC]
RewriteRule ^(.*)$ http://manufer.com.ar/%1/$1 [P,L]

IMPORTANTE: Acordaos de poner antes de cada punto la barra invertida «\», porque un caracter de escape.

Lectura recomendada: Usando mod_rewrite para redireccionar subdominios.

Este ejemplo no he tenido tiempo de probarlo pero funciona según me han comentado un par de personas.