2010-10-20 22 views
6

D'accord, cela aurait pu être répondu avant mais apparemment jusqu'à présent je n'ai toujours pas trouvé la réponse.Sous-domaine dynamique PHP

Vous remarquerez peut-être que certains sites Web peuvent permettre aux utilisateurs de s'inscrire pour obtenir instantanément leur propre sous-domaine sur le site Web.

Par exemple, le domaine est www.domain.com. Si j'inscris un nouvel utilisateur en tant que henson, j'obtiendrai ma propre page sur le site web, ex: www.henson.domain.com (je ne sais pas si la partie www est nécessaire) Donc si un utilisateur ouvre www.henson.domain .com, il va effectivement ouvrir www.domain.com?owner=henson

Puis-je faire cela en utilisant seulement htaccess? Parce que j'ai lu quelque part que cela nécessite également la création manuelle de sous-domaines dans cpanel (ce qui va à l'encontre du but du site).

Oh, le site est codé avec PHP plat, donc pas de frameworks MVC. SI quelqu'un sait comment faire cela facilement avec des cadres (de préférence CodeIgniter), soyez les bienvenus pour répondre.

Merci pour la réponse.

+0

cochez celui-ci http: // stackoverflow.com/questions/586129/create-sous-domaines-sur-le-mouche-avec-htaccess-php –

+0

Voir ma solution. Si vous pouvez activer des sous-domaines génériques, ceci peut être réalisé dans '.htaccess'. –

Répondre

3

Vous ne pouvez pas htaccess, vous devez configurer un hôte virtuel générique et le réécrire dans le répertoire URL/dont vous avez besoin. Voir http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/ pour plus d'informations

+0

'Vous ne pouvez pas htaccess'. En fait ... http://corz.org/serv/tricks/htaccess2.php (cherchez 'plusieurs domaines en une seule racine'). –

+0

j'ai lu que, et le code est comme ceci: VirtualDocumentRoot c:/projets /% 1/ où dois-je mettre ce code? dans htaccess? – Henson

+0

Dans le fichier 'httpd.conf' ou équivalent (dépendant du système). – Petah

0

Vous pouvez analyser $_SERVER['SERVER_NAME'] pour déterminer quel sous-domaine est utilisé. La partie www n'est en fait jamais nécessaire. C'est simplement un sous-domaine qui n'a aucun sens. La plupart du temps, il est simplement mappé au domaine principal. Exemple:

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

Si vous avez CPANEL sur votre serveur, il y a un XMLAPI qui vous permet de crée dynamiquement par PHP sous-domaines.

Oui, dynamiquement, pas manuellement. Je viens de passer les 2 derniers jours sur ce sujet (création dynamique de tout à partir de sous-domaines à des adresses email aux domaines addon et sql dbs, utilisateurs ... tout), et cpanel API gère tout, proprement. Donc, prenez un moment et le comprendre. Téléchargez le XMLAPI au premier lien sur cette page: http://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html. Le fichier xmlapi.php est le seul dont vous avez besoin sur votre serveur.

Cette page de forum est un cimetière cauchemardesque de demi-exemples de travail écrits par des codeurs très avancés et/ou très hacky sans point de départ clair.

Voici un script de base en PHP pour ajouter des sous-domaines, remplacez les majuscules par vos valeurs personnelles. Cela m'a pris un bon moment pour bien faire les choses. Bonne chance! Prochaines étapes, cliquez sur ce lien de forum et lisez toutes les autres fonctions API1 et 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

Ceci peut être réalisé en .htaccess à condition que votre serveur est configuré pour permettre des sous-domaines génériques. J'ai réalisé cela dans JustHost en créant manuellement un sous-domaine nommé * et en spécifiant un dossier appelé sous-domaines comme racine du document pour les sous-domaines génériques. Ajouter à un fichier .htaccess dans votre dossier sous-domaines:

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

Enfin, créez un dossier pour votre sous-domaine et placez les fichiers sous-domaines.

+0

Pourquoi la downvote? –