2013-04-26 116 views
1

我試圖找到解決辦法,但我覺得我挺在這裏做得不對,笨,繞過主或默認控制器

我希望任何一個與笨路由的良好的知識可以幫助我在這方面。

我想那是什麼,

我已經默認控制器名爲main

$route['default_controller'] = "main"; 
$route['404_override'] = ''; 

我的網址都是一樣

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

我想是刪除/隱藏main從中心和鏈接可以直接工作。 這樣

mydomain.com/#home

但是我沒有成功有點笨使用的文件。 這就是我做到的。 在路由文件添加此

$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文件中並不好。

任何想法如何實現它?

回答

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"; 
+0

謝謝,它解決了我的問題.. – 2013-04-26 13:12:29

+0

高興我可以幫助:) – despina 2013-04-26 13:51:18

0

如果您只需要這三個URL(主頁,搜索和登錄)在沒有控制器名稱的情況下工作,只需將其中的三個URL放在routes.php($route['login'] = "main/login";等)中,並且不使用通配符以防止其他來自重新路由的網址。

於是,所有的人都應該是:

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

沒有,它不只是這三個網址,我只給了例子,這些網址, Isin't還有沒有其他更好的辦法,像的.htaccess文件或路由器功能的東西? 是的,有一點很常見,那就是我所有的url函數都會有#,就像你在例子中看到的那樣。 我正在使用jquery燒烤。 – 2013-04-26 10:08:35

+0

我仍然認爲最好的做法是在routes.php或.htaccess中製作這樣的白名單......否則,您將無法使這些鏈接同時工作(使用'main'和without)。 – Shomz 2013-04-26 10:23:12