我试图找到解决方案,但我认为我在这里做错了什么,
我希望任何对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文件并不擅长。
任何想法如何实现它??
答案 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";