Если вы используете веб-сервер Apache и Fedora Linux, вы должны сделать следующее
В вашем днс добавить подстановочный знак. Предположим, что ваше доменное имя demo.com dns-запись типа
*.demo.com IN A 192.168.1.100
Замените ip на ваш ip.
Тогда что-нибудь .demo.com придет на ваш сервер.
Мы должны настроить apache для обработки поддоменов.
Для каждого субдомена мы должны
- создать корневую папку документа
- создайте файл виртуального хоста и
- перезагрузите apache
Следующий php соответствует приведенной выше идее.
<?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();
?>
Вы должны запустить этот скрипт от имени пользователя root. В файле конфигурации виртуального хоста вы можете добавить дополнительные параметры. Вы также можете проверить ответ на аналогичный вопрос вопрос.
Надеюсь, это поможет.