Si vous utilisez un serveur web apache et un fedora linux, vous devez faire les choses suivantes
Dans votre DNS, ajoutez une entrée générique. Supposons que votre nom de domaine est demo.com l'entrée dns comme
*.demo.com IN A 192.168.1.100
Remplacez l'ip par votre ip.
Puis n'importe quoi.demo.com viendra à votre serveur.
Nous devons configurer apache pour gérer le sous-domaine.
Pour chaque sous-domaine, nous devons
- créer un document dossier racine
- créer un fichier hôte virtuel et
- restart apache
Le php suivant est conforme à ce qui précède idée.
<?php
define('DOMAIN','demo.com');
define('DOCROOT','/home/username/www/');
define('CONF_FOLDER','/etc/httpd/conf.d/');
/*
* Function to create conf file in conf.d folder
*/
function createNewVhostFile($subdomain) {
$filename = CONF_FOLDER.$subdomain.'.conf';
$fh = fopen($filename, 'w') or die("can't open file");
$servername = $subdomain.".".DOMAIN;
$docroot = DOCROOT.$subdomain;
$virtualhost = <<<HEREDOC
<VirtualHost $servername >
DocumentRoot $docroot
ServerName $servername
ServerAlias $servername
</VirtualHost>
HEREDOC;
fwrite($fh, $virtualhost);
fclose($fh);
}
/*
* Function to restart apache
*/
function restartApache() {
$configtest = `apachectl configtest 2>&1`;
echo $configtest;
if(strtolower(trim($configtest)) == 'syntax ok'){
$restart = `/etc/init.d/httpd restart 2>&1`;
echo $restart;
}
}
/*
* Create document root folder.
*/
function createDocRoot($subdomain){
$docroot = DOCROOT.$subdomain;
if(is_dir($subdomain)){
echo "Document root allready exists.";
}else{
mkdir($docroot,644);
}
}
$subdomain = "sub";
createDocRoot($subdomain);
createNewVhostFile($subdomain);
restartApache();
?>
Vous devez exécuter ce script en tant qu'utilisateur root. Dans le fichier de configuration de l'hôte virtuel, vous pouvez ajouter plus d'options. Vous pouvez également vérifier la réponse à une question similar question.
Espérons que cela aide.