想在codeigniter中创建动态子域吗?

时间:2012-03-16 11:53:55

标签: php .htaccess codeigniter codeigniter-url

在我的网站中,我想为用户添加一项功能,以便在域名中使用他们的用户名。

就像现在的codeigniter一样,我想让用户使用自己的网址登录网站并做其他事情。

例如:

我希望www.username.mysite.com/loginwww.username.mysite.com/category

所以这里用户可以使用他们的凭证登录并添加类别。所以我的网站上有两个控制器,带有登录名和分类。

那么如何使用路线或.htaccess。

2 个答案:

答案 0 :(得分:3)

在服务器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 :(得分:1)

这里是您的问题的解释。 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 修改为 * .youdomain.com ,以便将所有子域检索到文档根目录文件夹中。然后你应该能够 mod_rewrite url解析你的uri才能成功。