像redmine这样的codeigniter中的自定义URL映射?

时间:2012-04-20 22:09:02

标签: php .htaccess codeigniter redmine

所以redmine有一个非常奇特的网址映射风格,我观察到:

http://demo.redmine.org/projects/<project-name>/controller/action

样品:

http://demo.redmine.org/projects/produto/activity
http://demo.redmine.org/projects/produto/issues/new
http://demo.redmine.org/projects/produto/issues/gantt
http://demo.redmine.org/projects/produto/files

,随着项目的变化,网址会发生变化。

我如何在codeigniter中执行此操作?我认为可以用routes.php完成,但到目前为止我无法到达任何地方。

寻求任何帮助。感谢。

3 个答案:

答案 0 :(得分:3)

在“application / controllers / projects.php”控制器中使用以下功能:

public function _remap($method)
{
    if ($method == 'project-name')
    {
        //display project1
    }
    elseif($method == 'project-name2')
    {
        //display project2
    }
}

您可以通过从数据库中提取它们来为不同的方法执行相同的操作

看看这里: http://codeigniter.com/user_guide/general/controllers.html#remapping

您还可以使用application / config / routes.php

中的自定义路由来路由您的控制器
$route['example'] = "controller/function";
$route['example2/(:any)'] = "controller/function";

答案 1 :(得分:2)

您可以在application / config / routes.php中使用routes文件 你会使用这样的东西:

// the $1 maps to :any
$route['projects/produto/:any'] = "$1";

// the $1 maps to the first any, $2 maps to the second :any
$route['projects/produto/:any/:any'] = "$1/$2";

如果要处理干净的URL,则需要启用mod_rewrite。否则期望index.php / controller / action。我不能在那里测试它,但你应该参考:

添加路由后(在配置中必须称为$ route []),刷新页面并尝试转到URL!

http://codeigniter.com/user_guide/general/routing.html

答案 2 :(得分:0)

将此添加到您的routes.php(顺便说一下:您需要启用网址重写才能使路由正常工作,即使用.htaccess

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

例如/projects/produto/issues/new将在类问题中调用new函数并将参数'produto'传递给它

还要检查http://codeigniter.com/user_guide/general/routing.html

相关问题