2012-03-20 38 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"; 
} 
相关问题