Задача:
Создание поддоменов из формы на странице сайта. Например дать возможность пользователям создавать поддомены для своих персональных страничек.
Решение:
1. В настройках ДНС создаем запись типа А *.site.ru указывающую на IP сервера
2. В корне сайта создаем файл .htaccess с таким содержанием:
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !^www.site.ru$ RewriteCond %{HTTP_HOST} (www.)?(.*).site.ru$ RewriteCond %{REQUEST_URI} !sub/ RewriteRule ^(.*)$ sub/%2/$1
где sub - это папка в корне сайта. В ней будут создаваться папки для поддоменов.
3. Делаем на сайте форму:
.site.ru
<form id="addsub" action="subdomain.php" name="addsub" method="post" enctype="multipart/form-data"> <input type="text" name="sub" size="8" /> .site.ru <input type="submit" size="10" name="subdom" value="OK"> </form>
4. Создаем обработчик subdomain.php:
<? $sub = preg_replace('/[^A-Za-z0-9-]/', '', $_POST['sub']); $url="Фактический адрес страницы"; $DB->query("SELECT sub FROM subdomains where sub='$sub' "); $row = $DB->fetch_row(); if ($row){ echo "Имя уже используется"; }else{ $DB->query("INSERT INTO subdomains (sub, url) VALUES ('$sub', '$url')"); if(!file_exists($_SERVER['DOCUMENT_ROOT']."/sub/$sub")){mkdir($_SERVER['DOCUMENT_ROOT']."/sub/$sub");} $fp = @fopen($_SERVER['DOCUMENT_ROOT']."/sub/$sub/.htaccess", 'w'); if ($fp) { $line = "RewriteEngine on\nRewriteRule (.*) {$url} [L]"; @fwrite($fp, $line); } @fclose($fp); echo "Поддомен создан"; }?>
MKPortal ©2003-2025 mkportal.it