2011-03-08 37 views
0

我在我的項目中使用CodeIgniter,我需要清理URL。我用這個htaccess:清潔的URL不能在CodeIgniter中獲取功能ID

RewriteEngine On 
RewriteCond $0 !^(index\.php|images|captcha|css|js|robots\.txt) 
RewriteRule ^.*$ index.php [L] 

url重定向工作正常。 如果我使用localhost/example/controll/這工作正常,如果我有一個controll作爲控制器,但如果我需要傳遞一個值到控制器像localhost/example/controll/how-to-design/它說404未找到。我是否需要獲得controll課程中的how-to-design設計並處理它?

回答

1

的URL localhost/example/controll/how-to-design轉化爲一個名爲controll控制器和一個名爲how-to-design

CI會尋找一個叫做how-to-design方法,這大概不存在的方法。

如果你想給該參數傳遞給controll URL需要是:

controll/index/how-to-design

function index($param) 
{ 
    echo $param; // echoes how-to-design 
} 

,也許可以與routing或通過在URI使用index解決這個問題。

+0

使用'function index($ param = FALSE)',因爲如果沒有給出參數,它會輸出錯誤。你也可以使用'$ param = $ this-> uri-> segment(3);'3其中3是段。 – CappY 2011-03-08 13:24:05

0

你不能默認在CodeIgniter中傳遞參數給控制器索引函數 - 在你的例子中CI會尋找一個叫做'how-to-design'的方法(這本身是不可能的,因爲破折號是不允許的在PHP函數命名約定中)。

您可以使用特殊的方法_remap在控制器手動處理路由 - http://codeigniter.com/user_guide/general/controllers.html#remapping - 或者你可以設置一些手動航線的config/routes.php文件

0

寫一個新的功能,並定義自定義路線吧在routes.php中,如果你想實現它。