2010-01-08 3 views
-1

Dans mon projet, je dois faire un sous-domaine, à savoircomment Biuld un subdoamin à partir du script

si le nom d'utilisateur est XXX quand il registre, un sous-domaine sera créé comme XXX.example.com

comment le faire? Je vais utiliser php pour les scripts.

concernant

Tarique

+0

A été répondu à plusieurs reprises: http://stackoverflow.com/search?q=create+subdomain+php – Gordon

Répondre

1

J'ai trouvé un script qui semble faire exactement cela, créer un sous-domaine sur votre serveur à la demande. Il a probablement besoin d'un peu de peaufinage pour qu'il fonctionne sur votre panneau de contrôle particulier, mais l'examen est assez positif pour autant que je sache.

Link

Avez-vous pensé à utiliser rewriting htaccess et url? trouvé ce code qui peut vous aider:

# Rewrite <subdomain>.example.com/<path> to example.com/<subdomain>/<path> 
# 
# Skip rewrite if no hostname or if subdomain is www 
RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
# Extract (required) subdomain (%1), and first path element (%3), discard port number if present (%2) 
RewriteCond %{HTTP_HOST}<>%{REQUEST_URI} ^([^.]+)\.example\.com(:80)?<>/([^/]*) [NC] 
# Rewrite only when subdomain not equal to first path element (prevents mod_rewrite recursion) 
RewriteCond %1<>%3 !^(.*)<>\1$ [NC] 
# Rewrite to /subdomain/path 
RewriteRule ^(.*) /%1/$1 [L] 

Source (Post #6)

1

Cela pourrait être un peu plus complexe que vous le pensez.

Je suggère de faire quelques lectures sur mod réécriture et htaccess.

Vous pouvez commencer ici:

htaccess Tutorial

Modrewrite tutorial

Subdomain Modrewrite Example

EDIT: Ou juste aller avec l'un des beaux exemples fournis mes collègues afin que les utilisateurs. ;)

+0

Merci, je pense que je dois l'étudier à partir de zéro. – tarique

1

Tant que cela est pour les sites non-SSL, puis de loin la plus simple est de ne pas déranger - il suffit d'utiliser un domaine DNS générique et vhost, puis mappez tous les comportements spécifiques au domaine dans votre code PHP. Si vous avez besoin de sites SSL, c'est beaucoup plus compliqué - vous devez avoir une adresse IP/port distincte pour chaque certificat - et les certificats woldcard peuvent être très coûteux.

Si vous souhaitez configurer un pack d'hébergement, son fonctionnement est un peu plus complexe. Cela dépend du serveur Web et du serveur DNS que vous utilisez. En supposant (encore une fois pas de SSL) avec Apache sur Unix/POSIX/Linux et lier, puis, je voudrais aller avec une entrée DNS générique, puis: 1) créer un répertoire de base pour le site Web, éventuellement remplir cette avec un ensemble de fichiers par défaut 2) ajouter une définition vhost dans son propre fichier dans /etc/httpd/conf.d nommé XXX.conf 3) envoyer un kill -HUP au processus HTTPD (le fait lire le nouveau fichiers de configuration sans avoir à redémarrer complètement). Une chose à noter est que vous ne devriez pas permettre au processus httpd d'accéder directement en écriture à ses propres fichiers de configuration - vous ne voulez certainement pas lui donner les privilèges root.Une solution plus sûre consisterait à créer un script CLI pour effectuer cela en utilisant le nom d'utilisateur en tant qu'argument, puis à le rendre setuid et à l'invoquer à partir du script exécuté par le processus HTTPD.

C.

0

la meilleure façon est d'utiliser un joker dans votre serveur DNS:

www.example.com. IN A 1.2.3.4 
*.example.com. IN A 1.2.3.4 

De cette manière, aucun sous-domaine doit être créé: tous pointent vers la même adresse IP par défaut .

Dans votre code PHP, il vous suffit obtenir $ _SERVER [ « host »] et obtenir la partie poing:

$hostParts=explode('.',$_SERVER["HTTP_HOST"]); 
$user=$hostParts[0] 
0

D'abord, vous devez vous assurer que vous avez une configuration de domaine générique dans DNS, et assurez-vous que votre serveur web (apache?) dirige toutes les requêtes pour ce domaine générique vers votre fichier php. Puis, en php, vous pouvez voir $ _SERVER ["HTTP_HOST"] pour voir quel sous-domaine est utilisé pour cette requête particulière.

0

Puisque vous allez créer des sous-domaines lorsqu'un utilisateur s'enregistre. Essayez ce fichier comme .htaccess:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^.htaccess$ - [f] 

RewriteCond %{HTTP_HOST}!^www.domain.com 
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com 
RewriteRule ^$(.*) /$1/%1 [L] 

faire fonction d'un contrôleur qui prendra la valeur du sous-domaine et afficher ce qui est nécessaire. comme ::

public function show ($domain) 
{ 
    **.**..*..**.** Your code goes here 
} 

lorsqu'un utilisateur essaiera cette xxx.domain.com/controller/show ce sera domain.com/controller/show/xxx. si vous voulez xxx.domain.com être domain.com/controller/show/xxx il suffit d'éditer le fichier htaccess comme vous le souhaitez.

Questions connexes