2010-10-20 51 views
6

Bueno, esto podría haber sido respondido antes, pero aparentemente hasta ahora todavía no he encontrado la respuesta.Subdominio dinámico PHP

Puede notar que hay algunos sitios web que pueden permitir a los usuarios registrarse para obtener instantáneamente un subdominio propio en el sitio web.

Por ejemplo, el dominio es www.dominio.com. Si registro un nuevo usuario como henson, obtendré mi propia página en el sitio web, por ejemplo: www.henson.domain.com (no estoy seguro si la parte www es necesaria) Entonces, si un usuario abre www.henson.domain .com, realmente abrirá www.domain.com?owner=henson

¿Puedo hacer esto usando solo htaccess? Porque leí en alguna parte que esto también requiere la creación manual de subdominios en el panel de control (lo que frustra el propósito del sitio web).

Oh, el sitio web está codificado con PHP plano, por lo que no hay frameworks MVC. Si alguien sabe cómo hacer esto fácilmente con frameworks (preferiblemente CodeIgniter), puede contestar.

Gracias por la respuesta.

+0

verifique uno de ellos http: // stackoverflow.com/questions/586129/create-subdominios-on-the-fly-with-htaccess-php –

+0

Ver mi solución. Siempre que pueda habilitar 'subdominios comodines', esto se puede lograr en' .htaccess'. –

Respuesta

3

No puede en htaccess, debe configurar un host virtual comodín y volver a escribirlo en la URL/directorio que necesite. Consulte http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/ para obtener más información

+0

'No puedes en htaccess'. En realidad ... http://corz.org/serv/tricks/htaccess2.php (busque 'múltiples dominios en una raíz'). –

+0

He leído que, y el código es así: VirtualDocumentRoot c:/proyectos/1%/ ¿Dónde pongo el código? en htaccess? – Henson

+0

En el 'httpd.conf' o archivo equivalente (dependiente del sistema). – Petah

0

Puede analizar $_SERVER['SERVER_NAME'] para determinar qué subdominio se utiliza. La parte www en realidad nunca es necesaria. Esto es simplemente un subdominio que no tiene significado. La mayoría de las veces simplemente se asigna al dominio principal. Ejemplo:

if (preg_match('/^(www\.)?(.+)\.your-domain.com$/', $_SERVER['SERVER_NAME'], $matches) && $matches[2] != 'www') { 
    $subdomain = $matches[2]; 
    // your logic goes here 
} 
4

Si tiene cPanel en su servidor, hay un XMLAPI que le permite crea dinámicamente subdominios a través de PHP.

Sí, dinámicamente, no manualmente. Acabo de pasar los últimos 2 días en esto (creación dinámica de todo, desde subdominios hasta actas de correo electrónico, dominios addon y dbs sql, usuarios .... todo), y la API cpanel lo maneja todo, limpiamente. Así que toma un tiempo y averígualo.

Descargue el XMLAPI en el primer enlace en esta página: http://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html. El archivo xmlapi.php es el único que necesita en su servidor.

Esa página del foro es un cementerio de pesadilla de la mitad de ejemplos de trabajo escritos por codificadores muy avanzados y/o muy hacky sin un punto de partida claro.

Aquí hay una secuencia de comandos básica en PHP para agregar subdominios, reemplace los límites con sus valores personales. Esto me llevó bastante tiempo para hacerlo bien. ¡La mejor de las suertes! Los próximos pasos, golpear el enlace del foro y leer todas las demás funciones API1 y API2!

include("PATH_TO_THE_DOWNLOADED_xmlapi.php"); 

    $ip = "YOUR_IP_ADDRESS"; 
$root_pass = "ROOT_CPANEL_PASSWORD!"; 


$xmlapi = new xmlapi($ip); 
$xmlapi->password_auth("root",$root_pass); 

$account = "YOUR_CPANEL_MAIN_ACCNT_NAME"; 


print $xmlapi->api2_query($account, 'SubDomain','addsubdomain', array(dir=>"public_html/NAME_OF_SUBDOMAIN", domain=>"NAME_OF_SUBDOMAIN", rootdomain=>"MAIN_DOMAIN.com")); 
-1

Esto se puede lograr en .htaccess proporcionan su servidor está configurado para permitir subdominios comodín. Logré eso en JustHost creando un subdominio nombrado manualmente * y especificando una carpeta llamada subdominios como la raíz del documento para los subdominios comodín. Agregue esto a un archivo en la carpeta de .htaccess subdominios:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.website\.com$ 
RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$ 
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1 
RewriteRule ^(.*)$ /%1/$1 [QSA] 

Por último, crear una carpeta para su subdominio y colocar los archivos de subdominios.

+0

¿Por qué el voto a favor? –

Cuestiones relacionadas