想要在 codeigniter 中创建动态子域?
Posted
技术标签:
【中文标题】想要在 codeigniter 中创建动态子域?【英文标题】:Want to create dynamic subdomain in codeigniter? 【发布时间】:2012-04-01 23:09:27 【问题描述】:在我的网站中,我想为用户添加一个功能,以便在域中使用他们的用户名。
就像现在在 codeigniter 中一样,我想让用户使用他们自己的 url 登录网站并做其他事情。
例如:
我想要www.username.mysite.com/login
或www.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_rewrite 或 url parse 你的 uri 来成功。
【讨论】:
对不起,不是一个正确的答案,我需要什么。 好的,我只是想指出您是否可以通过 ssh 访问您的主机,或者访问 httpd.conf 文件,或者重新启动 apache 服务器。 不,我没有任何访问权限。但是创建动态子域与服务器有什么联系?? 如果您无法访问服务器以按照建议修改 dns/webserver 详细信息,我怀疑您能否实现您想要的。以上是关于想要在 codeigniter 中创建动态子域?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?