2013-05-27 58 views
0

我有一個笨網站,請求的URL的形式是:笨URL重新映射刪除段

example.com/segment1/segment2/segment3 where: 

segment 1 is a folder name 
segment 2 is a controller name 
segment 3 is a function name 

我想重定向這些請求到:

example.com/segment2/segment3 

我已經試過這是我的* routes.php文件*配置:

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

,在我的瀏覽器的地址欄中顯示了reqyest是不變的:

example.com/segment1/segment2/segment3

我該如何解決這個問題?

+0

所以,你想之前定義當用戶輸入「example.com/segment1/segment2/ segment3「進入瀏覽器,它實際上會調用」example.com/index.php/segment2/segment3「??? – prograhammer

+0

David,我希望它生成example.com/segment2/segment3 index.php已被取出 – user61629

+0

只需將我的答案中的第二行添加到正在刪除索引的.htacccess文件中的部分之上.php – prograhammer

回答

1

您可以添加到您的.htaccess文件(如你提到你的文件夾是靜態的):

RewriteRule ^(.*)?/(.*)?$ your-folder-here/$1/$2 [L,NC]             
+0

對不起David,我希望在請求命中瀏覽器之前通過codeigniter完成此操作。我已經有一個htacess文件正在進行其他修改,但AFAIK htacess文件接受輸入的請求並對其進行修改,但是這會在瀏覽器窗口中留下初始請求,我想讓它看起來更漂亮。謝謝 - 比爾 – user61629

+1

嗨比爾,well codeigniter不會改變你在瀏覽器中輸入的內容(比如重定向)使用路由,就像你正在嘗試的那樣。大多數情況下,這個想法是給出一個規則,該規則採用輸入URL的首選方式並將其路由到難看的真實位置。基本上,用戶輸入一個漂亮的URL並祕密地被帶到真實(醜陋)的位置。那麼這個漂亮的網址是哪一個,哪個網址是醜陋的網址? – prograhammer

+0

David醜陋的URL:example.com/segment1/segment2/segment3漂亮的URL:example.com/segment2/segment3。請記住segment1是一個常量(文件夾名稱) – user61629

0

這是可行的,但這將覆蓋每一個可能的URL。

$route['(:any)/(:any)'] = 'controller_name/$1/$2'; 

爲了讓其他控制器的工作,你有上面的語句

$route['other_controller_1/(:any)'] = 'other_controller_1/$1'; 
$route['other_controller_2/(:any)'] = 'other_controller_2/$1'; 

URI Routing : Codeigniter User Guide