Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/03/2009, 22:35
jpneruda
 
Fecha de Ingreso: mayo-2008
Mensajes: 34
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: subDominios dinamicos, como se hace?

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.

Última edición por jpneruda; 31/03/2009 a las 18:36 Razón: posibilidad de texto con url