当我在一个特定的用户页面上时,我如何将路由和uri段组合在一起,将用户id放在url中


How do I combine routing and uri segments to put the user id in the url when on a specific user page?

我试图在查看他们的页面时将用户id附加到url,或者在查看另一个用户页面时将相同的内容附加到url。我得到这个错误Unable to load the requested file: account/profile/218.php用这个代码:

//Routes.php

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['profile/:num'] = "account/profile"; 
//I've also tried doing 
$route['profile/([a-z]+)/('d+)'] = "profile/$1/id_$2"; 

//没有产生上述错误的uri段的控制器:

public function profile() 
    {
        $this->load->helper('date');
        $this->load->library('session');
        $session_id = $this->session->userdata['id'];
        $this->load->model('account_model');
            $user = $this->account_model->user();
        $data['user'] = $user;
        $data['profile_icon'] = 'profile';
        $data['main_content'] = 'account/profile/'.$user['id'];
        $this->load->view('includes/templates/profile_template', $data);
    }

当我使用这个:

public function profile() 
{
    $this->load->helper('date');
    $this->load->library('session');
    $session_id = $this->session->userdata['id'];
    $this->load->model('account_model');
        $user = $this->account_model->user();
    $data['user'] = $user;
    $user['id'] = $this->uri->segment(4);
    $data['profile_icon'] = 'profile';
    $data['main_content'] = 'account/profile/'.$user['id'];
    $this->load->view('includes/templates/profile_template', $data);
}

它会产生以下错误:

无法加载请求的文件:account/profile/.php

**编辑

HTACCESS

Deny from all
RewriteEngine on
RewriteCond $1 !^(index'.php|images|robots'.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

使用:

$route['profile/:num'] = "account/profile/$1";

并在配置文件中删除index.php

application/config/routes.php文件中添加

$route['profile/(:num)'] = "account/profile/$1";

更多关于路由的信息,你可以在这里阅读

public function profile( $user_id ) 
{
    $this->load->helper('date');
    $this->load->library('session');
    $session_id = $this->session->userdata['id'];
    $this->load->model('account_model');
    $user = $this->account_model->user();
    $data['user'] = $user;
    $user['id'] = $user_id;
    $data['profile_icon'] = 'profile';
    $data['main_content'] = 'account/profile/'.$user['id'];
    $this->load->view('includes/templates/profile_template', $data);
}

添加到配置文件方法中,额外的参数开关将是用户ID因此CCD_ 3不需要使用CCD_。

我建议你这样修改htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SCRIPT_FILENAME} -d [OR]
    RewriteCond %{SCRIPT_FILENAME} -f
    RewriteRule "(^|/)'." - [F]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>