Php 如何更改url,使其看起来像CodeIgniter中的cleanUrl

Php 如何更改url,使其看起来像CodeIgniter中的cleanUrl,php,codeigniter,Php,Codeigniter,我想更改读取的url 到 其中,user是控制器,getdetails是方法,5是用户ID 我怎样才能做到这一点 我是这样做的 我将getdetails更改为index,这样我就不需要再提到getdetails class user extends CI_Controller { function index() { $userid = $_GET['userid']; $this->load->model('data_model');

我想更改读取的url

其中,user是控制器,getdetails是方法,5是用户ID

我怎样才能做到这一点

我是这样做的

我将getdetails更改为index,这样我就不需要再提到getdetails

class user extends CI_Controller {

    function index()
    {
      $userid = $_GET['userid'];
      $this->load->model('data_model');
      $result=$this->data_model->data($userid);
    }
}
更改后,它现在看起来像

更新

是否可以在route.php中执行以下操作
$route['bloop/(:num)]=“foldername/bloop/index/$1”

其中foldername是我的服务器上的某个文件夹

请查看有关URI路由的文档:

你必须做两件事:

首先,在
application/config/routes.php
中定义路由:

$route['user/(:num)'] = "user/index/$1";
并为您的操作方法提供一个参数,如所述

class user extends CI_Controller {

    function index($id)
    {
      $userid = $id;
      $this->load->model('data_model');
      $result=$this->data_model->data($userid);
    }
}
上面的代码使url看起来像

但您不必总是在索引函数中这样做,您可以像下面这样做

class user extends CI_Controller {

   function index($id)
   {
      $userid = $id; 
      //
      //do some other things
      //
      $this->getdetails($userid);  //default handle
   }

   function getdetails ($userid )
   {
     $this->load->model('data_model');
     $result=$this->data_model->data($userid);
   }
}
url可以是两者

在配置中更改$route是否会影响其他控制器?我希望这种类型的功能只适用于用户控制器,而不适用于其他控制器?是的,它将影响每个控制器,您没有选择权。但是,如果您确保您的路线以
user/
开头,它只会影响用户控制器。如果您决定为另一个控制器设置,即
用户/测试
,您可以设置
$route['user/test']='othercontroller/test'。定义的路由顺序很重要。很好,这是route.php 1中的顺序$路由['defaultcontroller']=“视频”;2.$route['user/:num']=“user”;是吗?正如@Brewal所说,定义的路线顺序很重要。所以,让你的最后一条路线成为你的默认路线。然后任何异常,包括404路由,都会在该异常之前发生。它不起作用,传递的值无法到达该类中的函数。路由优先级为1$路由['user/:num']=“user”;2.$route['404_override']='';3.$route['default_controller']=“管理员/视频”;可能的原因是什么?然后你有重复的内容问题?没关系,如果你希望索引功能可以做一些其他的事情,这可能是一个不错的选择
class user extends CI_Controller {

   function index($id)
   {
      $userid = $id; 
      //
      //do some other things
      //
      $this->getdetails($userid);  //default handle
   }

   function getdetails ($userid )
   {
     $this->load->model('data_model');
     $result=$this->data_model->data($userid);
   }
}