Предположим, у вас есть контроллер с именем "Автор", функция в нем называется "страница", которая получает в качестве параметра имя пользователя:
class Author extends CI_Controller {
public function page($username = null) {
if($username == null) { //checking for forced url page load without username specified
//do a 404 redirect
} else {
$this->load->model('m_users');
if($this->m_users->exists($username)) { // checking if requested username exists
//do stuff with the user here
} else { //otherwise redirect
//do a 404 redirect
}
}
}
тогда я использовал бы следующий код внизу config / rout.php для маршрутизации " your-domain.com / author / page / username " в " your-domain.com / имя пользователя"
if($handle = opendir(APPPATH.'/controllers')) {
while(false !== ($controller = readdir($handle))) {
if($controller != '.' && $controller != '..' && strstr($controller, '.') == '.php') {
$route[strstr($controller, '.', true)] = strstr($controller, '.', true);
$route[strstr($controller, '.', true).'/(:any)'] = strstr($controller, '.', true).'/$1';
}
}
closedir($handle);
}
$route['([a-zA-Z0-9_-]+)'] = 'author/page/$1';
это перенаправит любой запрос формы your-domain.com / что угодно на your-domain.com / author / page / независимо от того, , только если контроллер с именем " Что бы ни "не существует. Если он существует, он получит доступ к контроллеру.
Кроме того, после всего этого, если вы хотите сделать что-то вроде your-domain.com / login для маршрутизации на your-domain.com / auth / login , вы можете сделайте это, добавив следующую строку в ваш config / rout.php
//...
$route['login'] = 'auth/login'; //add this line before the one specified above
$route['([a-zA-Z0-9_-]+)'] = 'author/page/$1';