我试图在查看他们的页面时将用户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>