1) DNS: agregar el wildcard en A
Ej:
Código:
*.dominio.com. 14400 IN A 66.266.66.166
2) RewriteEngine
Hay muchas maneras de hacerlo y dependera de la estructura de las url's. Agregar al .htaccess algunas de las sig. variantes:
Ej. transformar directorios en subdominios:
Código:
# extraer la parte del subdominio
Options +FollowSymlinks
RewriteOptions MaxRedirects=5
RewriteEngine on
RewriteCond %{hllp_HOST} ^([^\.]+)\.dominio\.com$ [NC]
# verificar que no sea www, ftp o mail
RewriteCond %1 !^(www|ftp|mail)$ [NC]
# redireccionar todo los pedidos al script pasando el subdominio
RewriteRule ^.*$ hllp://www.dominio.com/%1 [R,L]
Ej. subdominios dinamicos, index terminados en '/' y articulos en '.html'. Enviar todo al script index.php que se encargará de manejar los contenidos de acuerdo al pedido
Código:
Options +FollowSymlinks
RewriteOptions MaxRedirects=5
RewriteEngine on
RewriteCond %{hllp_REFERER} !^hllp://(.+\.)?dominio\.com/ [NC]
RewriteCond %{hllp_REFERER} !^$
#dejar imagenes en su lugar
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
#no aplicar al administrador
RewriteRule /admin/? - [L]
RewriteCond %{REQUEST_URI} !(\.|/$)
rewriterule (.+) $1/ [R=301,L]
rewriterule (\.xml|\.htm|\.html|/)$ /index.php [L]
3) PHP
Bueno, aqui tenés muchas variantes. En lo personal, suelo administrar subdominios en la BD y luego volcarlos a un archivo de texto para su cache.
Ya entrando en código, para identificar cada parte de la url:
Código PHP:
if (empty($_SERVER[SCRIPT_URI])) {
$_SERVER[SCRIPT_URI] = 'hllp://' . $_SERVER['hllp_HOST'] . $_SERVER['REQUEST_URI'];
}
$tiene_get = strpos($_SERVER[SCRIPT_URI], '?');
$_SERVER[SCRIPT_URI] = $tiene_get ? substr($_SERVER[SCRIPT_URI], 0, $tiene_get) : $_SERVER[SCRIPT_URI];
$uri = strtolower(str_replace(array('hllp://','www.'), '', $_SERVER[SCRIPT_URI]));
$pedido = array();
$pedido = explode('/', $uri);
if($pedido[count($pedido)-1] == '') array_pop($pedido);
$uri_dominio = array_shift($pedido);
$tmp_dom = explode('.', $uri_dominio);
$subdominio = $tmp_dom[0];
Espero te sirva... si tenés un caso concreto a implementar, tal vez resulte mas fácil de explicar.