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

Posted

技术标签:

【中文标题】想要在 codeigniter 中创建动态子域?【英文标题】:Want to create dynamic subdomain in codeigniter? 【发布时间】:2012-04-01 23:09:27 【问题描述】:

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

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

例如:

我想要www.username.mysite.com/loginwww.username.mysite.com/category

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

那么如何使用路由或 .htaccess 来做到这一点。

【问题讨论】:

Create Subdomains on the fly with .htaccess (php)的可能重复 【参考方案1】:

在服务器 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;

【讨论】:

【参考方案2】:

这里是对您的问题的解释。 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_rewriteurl parse 你的 uri 来成功。

【讨论】:

对不起,不是一个正确的答案,我需要什么。 好的,我只是想指出您是否可以通过 ssh 访问您的主机,或者访问 httpd.conf 文件,或者重新启动 apache 服务器。 不,我没有任何访问权限。但是创建动态子域与服务器有什么联系?? 如果您无法访问服务器以按照建议修改 dns/webserver 详细信息,我怀疑您能否实现您想要的。

以上是关于想要在 codeigniter 中创建动态子域?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?

如何在webapp中创建子域用户帐户

如何使用 .htaccess 在 codeigniter 中实现动态子域?

如何在 PHP 中创建子域? [复制]

如何在 laravel 中创建子域

如何在 apache(xampp) 服务器中创建子域?