Codeigniter 重新路由后未加载默认控制器

Codeigniter 重新路由后未加载默认控制器,codeigniter,codeigniter-url,Codeigniter,Codeigniter Url,我有一个codeigniter Multistae安装,在那里我有这样的代码,我可以为网站提供这样的链接 site.com/sites/sitename/controller/function/vars site.com/controller/function/vars/ subdom.site.com/controller/function/vars 挑战就在这里,路线在哪里 $route['sites/([^/]+)/(.*)'] = '$2'; $route['default_contro

我有一个codeigniter Multistae安装,在那里我有这样的代码,我可以为网站提供这样的链接

site.com/sites/sitename/controller/function/vars site.com/controller/function/vars/

subdom.site.com/controller/function/vars

挑战就在这里,路线在哪里

$route['sites/([^/]+)/(.*)'] = '$2';
$route['default_controller'] = "content";
我开始像这样处理链接

site.com/sites/sitename/controller/function/vars site.com/controller/function/vars

当我去看电影的时候

www.site.com/sites/sitename/

默认控制器未加载

我创建了config.php,以便在访问链接时,考虑到链接结构

site.com/sites/sitename/controller/function/vars

然后

如果我去

site.com/controller/function/vars

然后

$config['base_url']=”http://site.com/";

对于第二种情况,默认控制器完全加载。对于子网站情况,不/

我只有404

怎么办

更新2:

我有一个多文件夹设置

当用户转到www.site.com/sites/site\u name时

然后是一个应用程序文件夹

/已加载根文件夹/用户站点/站点名称

当用户访问site.com/controller/function/var1/var2时

默认的应用程序文件夹是

/根文件夹/应用程序已加载

当用户转到sub1.site.com应用程序文件夹时

/根文件夹/域/子1\u站点\u com已加载

所以当我进入地址栏时

它应该像没有URI一样。并且应该加载默认控制器

    // Application folder loading code
$myApp = '';


if($_SERVER['SERVER_ADDR']=='127.0.0.1'){
    $main_url='site.com';
}
else{
    $main_url='site1.com';
}

//echo $main_url;

switch($_SERVER['HTTP_HOST'])
{
    case $main_url;




        $uri_string=$_SERVER['REQUEST_URI'];
                    $link_way=explode('/',$uri_string);

        if(strlen($uri_string)>6 and $link_way[1]=='sites' ){



            //print_r($link_way);
            //var_dump($link_way);

            //checking if the link goes to usersites and sitename is bigger and =5
            if($link_way[1]=='sites' and strlen($link_way[2])>=5){


                $myApp='sites/usersites/'.$link_way[2];
                define('SITE_ALIAS','1|'.$link_way[2]);


                }
            elseif($link_way[1]=='sites' and strlen($link_way[2])<5){
                exit('Username should be more than 4 chars');

                }






            }

        else{

                        define('SITE_ALIAS','0|'.str_replace('.','_',$_SERVER['HTTP_HOST']));


        $myApp = 'application';
                }




        break;

     default:
        $myApp = str_replace('.','_',$_SERVER['HTTP_HOST']);
        $myApp=str_replace('www_','',$myApp);
                 define('SITE_ALIAS','2|'.$myApp);
        $myApp='sites/domains/'.$myApp;



    }

$application_folder = $myApp;
//应用程序文件夹加载代码
$myApp='';
如果($\u服务器['SERVER\u ADDR']=='127.0.0.1'){
$main_url='site.com';
}
否则{
$main_url='site1.com';
}
//echo$main_url;
交换机($\u服务器['HTTP\u主机']))
{
案例$main_url;
$uri\u string=$\u服务器['REQUEST\u uri'];
$link\u way=分解('/',$uri\u字符串);
如果(strlen($uri_string)>6和$link_way[1]=='sites'){
//打印(链接方式);
//变量转储(链接方式);
//检查链接是否指向usersites,sitename是否更大且=5
如果($link\u-way[1]=='sites'和strlen($link\u-way[2])>=5){
$myApp='sites/usersites/'.$link_-way[2];
定义('SITE_ALIAS','1 |'.$link_way[2]);
}

elseif($link\u-way[1]=='sites'和strlen($link\u-way[2])你问什么还不完全清楚,但这里有一个镜头:

您需要在站点的根目录中创建一个
.htaccess
文件(即
系统
文件夹所在的文件夹)。在该文件中:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
然后选择文件夹结构:

所以你有了你的控制器文件夹。在其中,为每个站点创建一个文件夹。在每个控制器中创建你的默认控制器(上图中名为content.php)

使用此设置,
www.site.com/sites/site1
将从
application/controllers/site1/content.php
调用默认控制器(
content
),并显示该控制器的
索引功能

$uri_string=$_SERVER['REQUEST_URI'];
                    $way=explode('/',$uri_string);


                       /// print_r($way);

//echo $way[3];
                        if($way[1]=="sites" and strlen($way[2])>2 and strlen($way[3])<1){


                            echo "JAJA ";


$route['sites/:any'] = "content/show_page/home";
                        }
                        else{



                           $route['sites/([^/]+)/(.*)'] = '$2';
                        }
如果随后要调用site1控制器的其他函数,则URL如下所示:
www.site.com/sites/site1/content/otherFunction


希望这能有所帮助。

您似乎在寻找一个具有您要通过的“sitename”的控制器。因此,如果您导航到
site.com/sites/my site/
,您的路由会告诉它查找一个名为my site的控制器并运行index方法

路由的值应该是实际控制器/方法对的路径

$route['sites/([^/]+)/(.*)'] = '$2';
应该是

$route['sites/([^/]+)/(.*)'] = 'sites/index/$1/$2';
这是假设索引方法接受站点名称作为站点控制器中的第一个参数。

$uri\u string=$\u SERVER['REQUEST\u uri'];
$uri_string=$_SERVER['REQUEST_URI'];
                    $way=explode('/',$uri_string);


                       /// print_r($way);

//echo $way[3];
                        if($way[1]=="sites" and strlen($way[2])>2 and strlen($way[3])<1){


                            echo "JAJA ";


$route['sites/:any'] = "content/show_page/home";
                        }
                        else{



                           $route['sites/([^/]+)/(.*)'] = '$2';
                        }
$way=explode('/',$uri_字符串); ///打印(方式); //echo$way[3];
如果($way[1]==“sites”和strlen($way[2])>2和strlen($way[3])stromdrain感谢您的回答,但我知道如何删除index.php并创建漂亮的链接。我已经编辑了这个问题。现在更清楚了?@DR.GEWA:请查看“更新”@DR.GEWA:这有帮助吗?@DR.GEWA:没有。因为我在路由方面有问题,而不是在加载应用程序文件夹方面。我只需要路由2个roules。1.如果是像www.multi.com/sites/siteX/->>>>>>>>>>>/content/index/2这样的url。如果是www.multi.com/sites/siteX/controller或www.multi.com/sites/siteX/controller/metrod->>>>控制器/方法/还传递变量。此路由将不起作用,因为我的应用程序文件夹中没有任何sites.php控制器
$uri_string=$_SERVER['REQUEST_URI'];
                    $way=explode('/',$uri_string);


                       /// print_r($way);

//echo $way[3];
                        if($way[1]=="sites" and strlen($way[2])>2 and strlen($way[3])<1){


                            echo "JAJA ";


$route['sites/:any'] = "content/show_page/home";
                        }
                        else{



                           $route['sites/([^/]+)/(.*)'] = '$2';
                        }