在Codeigniter中重定向到别名

时间:2014-05-07 23:42:53

标签: php codeigniter redirect routes

您好我需要使用codeigniter重定向到url中的别名...例如 如果用户在浏览器中输入http://www.website.com/fedex,则需要获取别名之类的fedex并通过此别名在数据库中查找并重定向到必须为http://www.website.com/pages/fedex的正确URL ...这是我的代码。 ..

PD:顺便说一下,不存在名为fedex的控制器。

.. routes.php ...

$route['default_controller'] = "alias";
$route['404_override'] = '';
$route[':any'] = "alias/index/$1";

..页面控制器..

class Alias extends CI_Controller 
{
   public function __construct()
   {
      parent::__construct();
   }

   public function index()
   {
      $alias = $this->uri->segment(1);
      echo "Alias:" . $alias;
   }
}

1 个答案:

答案 0 :(得分:0)

我认为这就是你要做的......

class Alias extends CI_Controller {

  public function __construct()
  {
      parent::__construct();
      $this->load->database();
      $this->load->helper('url');
  }

  public function index(){
      echo 'Default page!';
  }

  public function get($alias)
  {
      $this->db->from('users')->where(array('username' => $alias));
      $query = $this->db->get();
      if ($query->num_rows() > 0){
        //This means that a row was returned from the database and their is a user that exists with that name
        redirect("/pages/$alias");
      }
      else{
        echo 'There is no user that exists with that username';
      }
  }

  public function pages($alias){
      echo "Hey $alias!";
  }

}


//Routes
$route['default_controller'] = "alias";
$route['404_override'] = '';
$route['pages/:any'] = "alias/pages/$1";
$route[':any'] = "alias/get/$1";

在构造函数中,它加载数据库类和URL帮助程序。在index()方法中,使用数据库从“users”表中选择一行,其中用户名是$别名。然后,如果从数据库返回一行,则使用if语句进行检查。如果返回了一行,则意味着用户退出并重定向到/ pages / username。否则它会回应说没有人退出该用户名。

确保更改与数据库设置匹配的数据库信息,并确保在数据库配置文件中将$ active_record设置为TRUE。