codeigniter多域设置问题

时间:2010-07-19 07:48:39

标签: codeigniter codeigniter-url

我正在尝试进行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文件夹中运行 在根...

你能帮助我吗?

2 个答案:

答案 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;