2010-10-20 10 views
6

Ok, questo potrebbe aver avuto risposta prima ma a quanto pare fino ad ora non ho ancora trovato la risposta.Sottodominio dinamico PHP

Si può notare che ci sono alcuni siti Web che possono consentire agli utenti di registrarsi per ottenere immediatamente un proprio sottodominio nel proprio sito web.

Ad esempio, il dominio è www.dominio.com. Se registro un nuovo utente come henson, otterrò la mia pagina nel sito Web, ad esempio: www.henson.domain.com (non sono sicuro se la parte www sia necessaria) Quindi, se un utente apre www.henson.domain .com, in realtà aprirà www.domain.com?owner=henson

Posso farlo utilizzando solo htaccess? Perché ho letto da qualche parte che questo richiede anche la creazione manuale di sottodomini in cpanel (che vanifica lo scopo del sito Web).

Oh, il sito Web è codificato con PHP flat, quindi nessun framework MVC. Se qualcuno sa come farlo facilmente con i framework (preferibilmente CodeIgniter), sii il benvenuto a rispondere.

Grazie per la risposta.

+0

controlla questo http: // stackoverflow.it/questions/586129/create-subdomains-on-the-fly-with-htaccess-php –

+0

Vedere la mia soluzione. Se è possibile abilitare i sottodomini 'jolly', questo può essere ottenuto in' .htaccess'. –

risposta

3

Non è possibile immettere htaccess, è necessario impostare un host virtuale con caratteri jolly e riscriverlo nella directory URL/desiderata. Vedere http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/ per ulteriori informazioni

+0

'Non puoi accedere a htaccess'. In realtà ... http://corz.org/serv/tricks/htaccess2.php (cerca "più domini in una radice"). –

+0

Ho letto che, e il codice è come questo: VirtualDocumentRoot c:/progetti /% 1/ Dove metto questo codice? in htaccess? – Henson

+0

Nel file 'httpd.conf' o equivalente (a seconda del sistema). – Petah

0

È possibile analizzare $_SERVER['SERVER_NAME'] per determinare quale sottodominio viene utilizzato. La parte www non è mai realmente necessaria. Questo è semplicemente un sottodominio che non ha significato. Il più delle volte è semplicemente mappato al dominio principale. Esempio:

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

Se avete CPANEL sul server, c'è un XMLAPI che permette di crea dinamicamente i sottodomini tramite PHP.

Sì, dinamicamente, non manualmente. Ho appena trascorso gli ultimi 2 giorni su questo (creazione dinamica di tutto, dai sottodomini agli allegati e-mail ai domini addon e sql dbs, agli utenti .... tutto), e l'API cpanel gestisce tutto, in modo pulito. Quindi prenditi un po 'di tempo e scoprilo.

Scaricare XMLAPI al primo collegamento in questa pagina: http://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html. Il file xmlapi.php è l'unico di cui hai bisogno sul tuo server.

Quella pagina del forum è un incubo di cimitero di metà esempi funzionanti scritti da programmatori molto avanzati e/o molto hacky senza un chiaro punto di partenza.

Ecco uno script di base in PHP per aggiungere sottodomini, sostituire i tappi con i vostri valori personali. Mi ci è voluto un po 'per andare bene. Buona fortuna! Passaggi successivi, fai clic sul link del forum e leggi tutte le altre funzioni API1 e 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

Ciò può essere ottenuto in .htaccess fornito il server è configurato per consentire sottodomini jolly. L'ho raggiunto in JustHost creando un sottomano chiamato manualmente * e specificando una cartella denominata sottodomini come root dei documenti per i sottodomini dei caratteri jolly. Aggiungi questo a un file nella cartella .htaccess sottodomini:

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

Infine, creare una cartella per il sottodominio e posizionare i file sottodomini.

+0

Perché il downvote? –