我正在尝试进行codeigniter的多域设置。
我需要支持这样的链接
www.site.com/users/username subdomain.site.com www.othersiteparkedonsite.com
在这3种不同的情况下,我想加载有关案例的应用程序文件夹
index.php中的以下代码仅适用于子域和域案例
// Application folder var
$myApp = '';
switch($_SERVER['HTTP_HOST'])
{
case 'site.com':
$myApp = 'application';
break;
default:
$myApp = str_replace('.','_',$_SERVER['HTTP_HOST']);
$myApp=str_replace('www_','',$myApp);
$myApp='sites/'.$myApp;
}
$application_folder = $myApp;
但是如何识别第一个案例和子域????
使用代码我只能在根文件夹中使用一个文件夹/ sites /并按子域名或域名加载文件夹,但是, 如何进行路由,或使用htaccess,以便我可以加载有关用户名,子域,域和控制器的应用程序文件夹??? 我的意思是,如果我们访问www.site.com/users/usernameX
,我需要index.php将加载/ usersites / usernameX文件夹
如果来自
的子域名sub1.site.com将加载应用程序文件夹
/子域/ sub1_site_com
如果其他域停放在同一文件夹
www.otherdomain.com将加载
/位点/ otherdomain_com
和
www.site.com/somecontroller/somefunction将在main / application文件夹中运行 在根...
你能帮助我吗?
答案 0 :(得分:0)
定义“不起作用”,因为 应该正常工作。它只是加载默认应用程序吗?
var_dump()HTTP_HOST并进行比较。如果您运行的是localhost:8080或8888等,它们将包含在HTTP_HOST中,因此您可能希望使用SERVER_NAME。
答案 1 :(得分:0)
我的解决方案是
$myApp = '';
switch($_SERVER['HTTP_HOST'])
{
case 'multi.com':
$myApp = 'application';
$uri_string=$_SERVER['REQUEST_URI'];
if(strlen($uri_string)>6){
$link_way=explode('/',$uri_string);
//print_r($link_way);
//var_dump($link_way);
//проверяем если линк ведет к сайту юзера и у юзернейм состоит из более 4х знаков
if($link_way[1]=='sites' and strlen($link_way[2])>=5){
$myApp='sites/usersites/'.$link_way[2];
}
elseif($link_way[1]=='sites' and strlen($link_way[2])<5){
exit('Username should be more than 4 chars');
}
}
break;
default:
$myApp = str_replace('.','_',$_SERVER['HTTP_HOST']);
$myApp=str_replace('www_','',$myApp);
$myApp='sites/domains/'.$myApp;
}
$application_folder = $myApp;