在我的网站中,我想为用户添加一项功能,以便在域名中使用他们的用户名。
就像现在的codeigniter一样,我想让用户使用自己的网址登录网站并做其他事情。
例如:
我希望www.username.mysite.com/login
或www.username.mysite.com/category
所以这里用户可以使用他们的凭证登录并添加类别。所以我的网站上有两个控制器,带有登录名和分类。
那么如何使用路线或.htaccess。
答案 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才能成功。