2012-03-20 34 views
0

我需要在facebook這樣的codeigniter中創建一個動態url。是否有可能使用codeigniter框架創建此類網址? 如: 1. www.facebook.com/nisha 2. www.facebook.com/dev像facebook一樣在codeigniter中創建一個動態url

+0

您可能正在尋找Apache的[mod_rewrite](https://www.google.com/search?q=mod+rewrite+tutorial)。 – 2012-03-20 04:33:32

+0

[Codeigniter的可能的重複:我想爲我的用戶創建用戶名時創建用戶URL](http://stackoverflow.com/questions/4632857/codeigniter-i-would-like-create-user-urls-for -my-users-when-they-create-a-user) – 2012-03-20 04:54:36

回答

2

您需要設置自定義路由中的application/config/routes.php文件控制器。像:


$route['([a-zA-Z]+)'] = "controller_name/function/$1"; 

這使得網址,像你所希望的方式,但它使所有的控制器無法訪問,這是因爲任何「/controllername /參數/」格式將與「匹配(:任何)',並且將被重定向到我們的'controller_name/function/'。

要停止由CI路由器重定向的控制器,必須首先明確定義routes.php上的所有控制器,然後在最後一行添加上述路由規則。多數民衆贊成我是如何工作的。 希望能以某種方式幫助你。

+0

這也將匹配'domain.com/1234123' – Starx 2012-03-20 06:42:39

0

它很容易通過使用路線進行設置。閱讀他們的路由guide

$route['([a-zA-Z]+)'] = "controller/user/$1"; 

但是,如果他們只有一個訪問網站的方式,就像是domain.com/username那麼它的確定,否則,這將被證明是從長遠來看很難趕上。在這種情況下,限制路由到一個有限的範圍內像

$route['users/([a-zA-Z]+)'] = "controller/user/$1"; 

這將在擴展系統幫助無數的方式

0

嘗試這種方式。如果你有很多控制器,它會減少很多重複行,但是我不知道它是否違反任何CI規則。

//this code block should be placed after any kind of reserved routes config 
$url_parts = explode('/',strtolower($_SERVER['REQUEST_URI'])); 
$reserved_routes = array("controller_1", "controller_2", "controller_3"); 
if (!in_array($url_parts[1], $reserved_routes)) {  
    $route['([a-zA-Z0-9_-]+)'] = "controller_1/profile/$1"; 
} 
相關問題