Динамический поддомен PHP - PullRequest
       23

Динамический поддомен PHP

7 голосов
/ 20 октября 2010

Хорошо, на этот вопрос можно было ответить раньше, но, видимо, до сих пор я до сих пор не нашел ответа.

Вы можете заметить, что есть некоторые веб-сайты, которые позволяют пользователям регистрироваться, чтобы мгновенно получить собственный поддомен на веб-сайте.

Например, домен www.domain.com. Если я зарегистрирую нового пользователя в качестве henson, я получу свою собственную страницу на сайте, например: www.henson.domain.com (не уверен, нужна ли часть www) Поэтому, если пользователь откроет www.henson.domain.com, он фактически откроет www.domain.com?owner=henson

.

Могу ли я сделать это, используя только htaccess? Потому что я где-то читал, что это также требует ручного создания поддоменов в cpanel (что противоречит цели сайта).

О, сайт написан на плоском PHP, поэтому нет MVC-фреймворков. Если кто-то знает, как это легко сделать с помощью фреймворков (желательно CodeIgniter), не стесняйтесь ответить.

Спасибо за ответ.

Ответы [ 4 ]

6 голосов
/ 22 марта 2011

Если на вашем сервере установлен CPANEL, существует XMLAPI, который позволяет динамически создавать субдомены через PHP.

Да, динамически, а не вручную.Я просто потратил последние 2 дня на это (динамическое создание всего, от поддоменов до адресов электронной почты, доменов аддонов и sql dbs, пользователей .... все), и cpanel API обрабатывает все это, чисто.Так что потратьте немного времени и разберитесь.

Загрузите XMLAPI по первой ссылке на этой странице: http://forums.cpanel.net/f42/xml-api-php-class-version-1-0-a-136449.html. Файл xmlapi.php - единственный, который вам нужен на вашем сервере.

Эта страница форума является кошмарным кладбищем наполовину рабочих примеров, написанных очень продвинутыми и / или очень хакерскими программистами без чёткой отправной точки.

Вот базовый скрипт на PHP для добавления поддоменов, замены заглавных букв на ваши личные значения.Это заняло у меня довольно много времени, чтобы получить права.Удачи!Следующие шаги, нажмите на ссылку этого форума и прочитайте все другие функции API1 и 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") );
4 голосов
/ 20 октября 2010

Вы не можете ввести htaccess, вы должны настроить виртуальный хост с подстановочными знаками и переписать его в нужный вам URL / каталог.См. http://blog.orite.com.au/web_development/2009-01-22/setting-up-wildcard-virtual-hosts-for-web-development-environment/ для получения дополнительной информации

0 голосов
/ 06 апреля 2016

Этого можно достичь в .htaccess, если ваш сервер настроен на использование подстановочных субдоменов. Я добился этого в JustHost, создав поддомен вручную с именем * и указав папку с именем поддоменов в качестве корня документа для подстановочных доменов. Добавьте это в файл .htaccess в папке поддоменов:

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

Наконец, создайте папку для своего субдомена и поместите файлы субдоменов.

0 голосов
/ 20 октября 2010

Вы можете проанализировать $_SERVER['SERVER_NAME'], чтобы определить, какой поддомен используется.Часть www на самом деле никогда не нужна.Это просто поддомен, который не имеет смысла.Большую часть времени он просто сопоставляется с основным доменом.Пример:

if (preg_match('/^(www\.)?(.+)\.your-domain.com$/', $_SERVER['SERVER_NAME'], $matches) && $matches[2] != 'www') {
    $subdomain = $matches[2];
    // your logic goes here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...