codeigniter中的URL路由问题

时间:2010-08-06 07:53:15

标签: regex codeigniter url-routing

我正在尝试使用codeigniter URL路由来路由URL。 我想重定向像

这样的网址
  • / users / edit?发送电子邮件至userController / editemail
  • / users / edit?password to userController / editpassword

我尝试在配置文件夹

中的routes.php中使用以下行
$route["users/edit?(email|password)"] = "userController/edit$1";

显示找不到的页面。我在猜?被视为正则表达式角色。我试图逃避它,但这也没有用。

我不想将配置设置uri_protocol设置为PATH_INFO或QUERY_STRING,因为这只是我想要设置的漂亮网址,而不是将任何内容传递给操作。

有人可以帮助我吗?

此致

1 个答案:

答案 0 :(得分:0)

你应该像这样逃避?它应该有效。 (未经测试)

$route["users/edit\?(email|password)"] = "userController/edit$1";

稍后修改

这可以按预期工作:

$route["users/edit(email|password)?"] = "userController/edit$1";

userController看起来像这样

<?php

class UserController extends Controller {

    function edit()
    {
        echo "general edit";
    }

    function editemail()
    {
        echo "edit email!";
    }

    function editpassword()
    {
        echo "edit password";
    }
}

路由器的工作方式如下:

  • 如果您转到http://sitename/index.php/users/editemail,则会看到editemail()操作。
  • 如果您转到http://sitename/index.php/users/editpassword,则会看到editpassword()操作。
  • 如果您转到http://sitename/index.php/users/edit,则会看到edit()操作(问号可选择使用电子邮件/密码字段,您可以在edit()操作中执行其他操作