Linwind

Crear subdominios dinámicos con .htaccess

Puede resultar muy interesante la opción de los subdominios para mostrar el contenido de una página web, podemos usar como ejemplo conocido por todos como es softonic donde cada aplicación tiene un subdominio para ella.

Aunque parezca complicado de realizar es muy sencillo gracias a htaccess, aunque el primer paso antes de nada es apuntar las DNS del dominio al servidor, para ello añadiremos a los registros que ya tenemos el *.dominio.com apuntando a la IP del servidor que gestione la página web.

Una vez que tengamos los dominios apuntando ya podremos comenzar a trastear y necesitaremos sacar el parámetro de la URL desde donde entran para saber que datos nos están pidiendo, para ello podemos utilizar htaccess de la siguiente forma:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.dominio\.com$
RewriteCond %{HTTP_HOST} ([^.]+)\.dominio\.com$
RewriteRule (.*) /carpeta/index.php?dato1=%1&dato2=$1 [QSA]

En este ejemplo lo que conseguiremos es poder recoger dos datos pudiendo usarlo de la siguiente manera dato1.dominio.com/dato2 podemos mostrar si no tenemos dato2 página de inicio de la ficha dato1 que nos interese y generar diversas páginas para esa ficha con dato2. Os recomiendo usar dato2 para mostrar también un sitemap.xml y un robots.txt de lo que contenga todo ese perfil para ayudar a los buscadores a indexar todo el contenido.

Para recoger los datos con PHP simplemente tendremos que usar $_GET[‘dato1’] y $_GET[‘dato2’].

if (!empty($_GET['dato1'])) {
   $ficha = $_GET['dato1'];
   echo 'Estamos en el subdominio '.$ficha;
   if (!empty($_GET['dato2'])) {
      $contenidoficha = $_GET['dato2'];
      echo 'Contenido'.$contenidoficha.' del subdominio '.$ficha;
   }
} else {
echo 'No es un subdominio';
}

Lo que se hace en este ejemplo de código es conocer que es lo que se nos está solicitando, si la información de una ficha, si una página concreta de esa ficha o si se accedió a través de una URL que no es la correcta.

Como ya sabréis existen muchas otras formas de realizar esto pero a mi parecer esta es una de las maneras más sencillas y rápidas de realizarlo.

Publicado el 4 de noviembre, 2011

Crear fichero .htaccess de forma sencilla.
Publicado el 04 Mar 2009

Bloquear IP con .htaccess
Publicado el 29 Jul 2009

Redireccionar página web con htaccess, PHP, JavaScript y HTML
Publicado el 28 Oct 2011

Frobee – Crear slide de imágenes
Publicado el 01 Ago 2010

6 Comentarios

  1. alejandro dice:

    Buenas, llevo mucho tiempo buscando la manera de hacer esto.
    No lo he conseguido por el primer paso, agregar *.dominio.com
    podrias explicar esto.
    Dispongo de un dominio, un shared hosting y acceso mediante cpanel.-
    Creo que el problema es que no se puede poner dominios con * en cpanel.
    saludos y gracias

    • Marcos dice:

      Si tienes acceso a Simple DNS Zone Editor simplemente tienes que poner en Add an A Record *.dominio.com. y la IP. Hay algunos hosting que no dan acceso a este panel. Acuérdate de esperar una horas para que se propague.

  2. Daniel dice:

    Buenas se que el articulo es algo viejo, pero lo estoy usando y me funciona bien, el problema es que cuando entra en la pagina gracias al subdominio, no carga ningun script y nincun css, porque los esta buscando en

    ejemplo.midominio.com/css/…

    Y esta ruta realmente no existe en el servidor.

    Muchas gracias de antemano

  3. Daniel Cardoza dice:

    si es cierto pero no es una buena solucion, tengo muchos css, muchos java scripts y muchas paginas que usan estos recursos, y el cambio es muy grande.

    Asi que esta seria mi ultimo recurso.

    Gracias igual.

    Salduos.

  4. iLen dice:

    Hola como estas, tengo una pagina donde cada subdominio debe tener el nombre de la ciudad ejemplo

    guayaquil.dominio.com
    quito.dominio.com

    pero obviamente no voy a crear un subdomio por cada ciudad que son mas de 200 entonces lo quiero hacer por medio de .htaccess variables es decir

    dominio.com/?city=guayaquil tiene que equivaler a guayaquil.dominio.com
    como podria hacer eso?. Osea la regla htaccess. La que tienes arriba no me funciona 🙁

Dejar un comentario


Actualidad Windows Linux Juegos Redes Sociales Utilidades Telefonía Movil Micropost