Хотите создать динамический поддомен в codeigniter? - PullRequest
9 голосов
/ 16 марта 2012

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

Как и в codeigniter прямо сейчас, я хочу дать пользователю возможность использовать свой собственный URL для входа на сайт и делать другие вещи.

Например:

Хочу www.username.mysite.com/login или www.username.mysite.com/category

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

Так, как сделать это с маршрутами Или .htaccess.

Ответы [ 2 ]

3 голосов
/ 03 апреля 2017

Используйте этот код в файле Vhost сервера:

<VirtualHost *:80>
    DocumentRoot "/home/yourdoma/public_html/yourdomain"
    ServerName yourdomain.com
    ErrorLog "logs/yourdomain.local-error.log"
    CustomLog "logs/yourdomain.local-access.log" common
    <Directory "/home/yourdoma/public_html/yourdomain">
        AllowOverride All
        Require all Granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/yourdoma/public_html/yourdomain"
    ServerName dummy-host.yourdomain.com
    ErrorLog "logs/yourdomain.com-error.log"
    CustomLog "logs/yourdomain.com-access.log" common
    ServerAlias *.yourdomain.com
    <Directory "/home/yourdoma/public_html/yourdomain">
        AllowOverride All
        Require all Granted
    </Directory>
</VirtualHost>

и для вашего конфигурационного файла codeigniter:

$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
$schema = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'].'://' : 'http://';
$spl_host = explode("mysite.com", $host);
$subhost = '';
if (count($spl_host) == 2) {
    $subhost = current($spl_host);
}

if($host == $subhost.'mysite.com') {
    $config['base_url'] = $schema.$subhost.'mysite.com';
} else {
    $config['base_url'] = $schema.$host;
}
1 голос
/ 16 марта 2012

вот объяснение вашей проблемы здесь. http://www.joehayes.org/setting-up-wildcard-dns-for-subdomains.html

Хорошо, если вы прочитали объяснение по ссылке, вы бы знали, что сначала вам следует перенаправить все свои субдомены на www. в файле httpd.conf есть определение виртуального хоста, содержащее только yourdomain.com для перенаправления всех запросов в DocumentRoot.

**ServerAlias yourdomain.com**
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/yourdoma/public_html
BytesLog domlogs/yourdomain.com-bytes_log
ServerName www.yourdomain.com
User yourdomain
Group yourdomain
CustomLog /usr/local/apache/domlogs/yourdomain.com combined
ScriptAlias /cgi-bin/ /home/yourdomain/public_html/cgi-bin/

и вам нужно изменить ServerAlias ​​ на *. Yourdomain.com , чтобы получить все дочерние домены в папку Document Root . тогда вы сможете mod_rewrite или url parse ваш URI, чтобы добиться этого.

...