在過去,我通過爲每個控制器創建新規則來解決這個問題。 所以我們走吧; 默認情況下,url如下所示;CodeIgniter .htaccess/Mod_rewrite
http://www.url.com/index.php/controller/method/parameters
我想改變它;
http://www.url.com/controller/method/parameter1/parameter2/parameter3/etc...
我的問題是參數部分,因爲我有時有3個或4個參數,但有時沒有或只有一個。
現在我有這個(這是不行的,不然我也不會發布):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
如果我要求只是它的工作原理控制器(因爲索引()方法是存在),但自定義方法和參數不起作用。
然後,我還必須添加路由到config/routes.php嗎? 在過去,我通過爲每個使用的組合添加自定義路線和規則來解決此問題。
我googled的天,沒有成功。請告訴我,如果我錯過了一個帖子。
在此先感謝。
你還添加路線嗎?我似乎通過只有該規則併爲每個控制器/方法/參數分別添加路由來實現它。 – Roel 2012-03-29 17:01:05
是的,我確實如':$ route ['controller /(:num)/(:any)'] =「controller/index/$ 1/$ 2」;其中(:num)是映射到數據庫的整數(id) )是指一個slu。。 – Mudshark 2012-03-29 17:14:06
另請注意:具有除「index」以外的控制器方法的URL不需要使用此方案的自定義路由,例如, 'example.com/controller/view/1/abc-de'可以在不需要自定義路由的情況下正常工作。然後,我將通過'$ this-> uri-> segment(3)'和'$ this-> uri-> segment(4)' – Mudshark 2012-03-29 18:02:43