Codeigniter,绕过主控制器或默认控制器

时间:2013-04-26 09:58:03

标签: php .htaccess codeigniter codeigniter-routing

我试图找到解决方案,但我认为我在这里做错了什么,

我希望任何对codeigniter路由有很好了解的人都能在这方面帮助我。

我想要的是,

我有一个名为main

的默认控制器
$route['default_controller'] = "main";
$route['404_override'] = '';

我的网站网址就像

mydomain.com/main/#home
mydomain.com/main/#search
mydomain.com/main/#login

我想要的是从中心删除/隐藏main,链接可以直接工作。 像这样

mydomain.com/#home

但是我使用codeigniter文档做了一点成功。 这就是我为实现它所做的。 在路线文件中我添加了这个

$route['(:any)'] = "main/$1";

它有效,但它与其他链接搞混了。

现在首先domain.com/main/#home停止工作。 第二,现在我不能在这里有其他控制器名称?

我的意思是,如果我尝试这个domain.com/virtualvault/#search,它就不会工作..

我想要的是什么, 当我去domain.com/main/#home时,它应该转到主页 而当我尝试domain.com/#home时,它也应该转到相同的主页 不要忘记我希望其他控制器完全正常工作。 我的意思是,domain.com/othercontrollername/#function应该有用。

什么以及如何实现它,.htaccess或路由php文件..

我甚至尝试过以下路线代码。

$route['#+(:any)'] = "main/#+$1";

但我对此路由或.htaccess文件并不擅长。

任何想法如何实现它??

2 个答案:

答案 0 :(得分:4)

// The below line is for the old controller to work as before
$route['main/(:any)'] = "main/$1"; 

//This line is for making other controllers work as before, you have to put them all
$route['virtualvault/(:any)'] = "virtualvault/$1";

//This is the last line; the order is important
$route['(:any)'] = "main/$1"; 

答案 1 :(得分:0)

如果您只需要这三个URL(主页,搜索和登录)在没有控制器名称的情况下工作,只需将其中的三个放在routes.php($route['login'] = "main/login";等)中,并按顺序不使用通配符防止其他网址被重新路由。

所以,所有这些都应该是:

$route['home'] = "main/home";
$route['search'] = "main/search";
$route['login'] = "main/login";