Configurar wildcard subdomains para tener subdominios dinámicos

Servidores      16 Diciembre, 2009      610 lecturas      2 comentarios

Tener subdominios dinamicos es mucho más barato que tener varios dominios ya que solo necesitas uno y puede ser muy útil en tu web por ejemplo si vas a:

  • internacionalizar el sitio: http://es.dominio.com, http://en.dominio.com
  • para que cada usuario tenga su propio subdominio: http://gafeman.dominio.com
  • para anuncios clasificados en una ciudad: http://madrid.dominio.com

Que sepa sólo se puede hacer en servidores dedicados, como por ejemplo hetzner.

Requisitos:

  • Poder administrar el fichero de entradas DNS de tu dominio
  • Tener apache y mod_rewrite en tu servidor
  • tener permisos para conectarte al servidor via SSH

Pasos:

1. Editar entradas DNS del dominio, es un fichero con un contenido parecido a este:

www                      IN A       ip
ftp                      IN CNAME   www
imap                     IN CNAME   www
loopback                 IN CNAME   localhost
pop                    IN CNAME   www
relay                    IN CNAME   www
smtp                     IN CNAME   www

@                        IN MX 10   mail

añade la siguiente linea debajo de la linea que empieza por www:
* IN A www

2. Edita la configuración del dominio apachetienes que añadir la siguiente linea en negrita para que acepte los subdominios:

ServerName dominio.com
ServerAlias *.dominio.com
ServerAdmin webmaster@localhost

3. Crea un fichero .htaccess en la raiz de tu servidor

Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

4. Reinicia el apache, en la terminal y conectado por SSH a tu servidor ejecuta el siguiente comando:

/etc/init.d/apache2 reload

5. Obtiene el subdominio con PHP

$subdominio = current( explode( ‘.’, $_SERVER['HTTP_HOST'] ) );

Por ejemplo con el dominio http://madrid.dominio.com, $subdominio tendría el valor madrid.

Ejemplos:

Enlaces de interés:

Compartir   twitter   del.icio.us   webeame   meneame   stumbleupon   mr.wong   ?  


  1. Alex Barros

    Genial! Conocía todo menos la parte final de cómo obtener el subdominio en el código PHP!


    Un apunte: en el punto 4, para reiniciar apache, dependiendo del servidor se usa un comando u otro, dependiendo de dónde se encuentra el ejecutable.


    En el mio por ejemplo utilizo /usr/sbin/httpd -k restart cuando quiero reiniciar el servidor.



  2. devir

    pues tu post esta buneo pero en realidad no se entiende mucho deberias de expecificar archivos y ruta para poder saber como va todo y si podes con figuras mejor ya que estoy tratando de configurar subdominios que esten en diferente servidor pero no lo he logrado si pudieras decirme como y como enlazar las otras maquina te lo agradeceria