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

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

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

例如:

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

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

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

【问题讨论】:

标签: php .htaccess codeigniter codeigniter-url


【解决方案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 详细信息,我怀疑您能否实现您想要的。
    猜你喜欢
    • 2015-10-09
    • 2016-07-07
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多