У меня есть контроллер с именем «профиль», а URL-адрес профиля пользователя – www.example.com/profile/user
Я уже использую перенаправление codeigniter в файле маршрутов
$route['profile/(:any)'] = "profile/index";
то, что я ищу, – удалить имя контроллера профиля из URL-адреса, чтобы он был оптимизирован и удобен для пользователя.
например
www.example.com/user
какие-либо предложения?
Вы можете попробовать любой из этих
// url could be yourdomain/imran $route['(:any)'] = 'profile/index/$1'; // url could be yourdomain/10 $route['(:num)'] = 'profile/index/$1'; // url could be yourdomain/imran10 $route['([a-zA-Z0-9]+)'] = "profile/index/$1";
Ваш класс может выглядеть так
class Profile extends CI_Controller { public function index($id) { // $id is your param } }
Обновление: (Будьте осторожны)
Помните, что если у вас есть класс Someclass
и вы используете url
например yourdomain/Someclass
тогда он будет перенаправлен в profile/index/$1
если у вас есть $route['(:any)']
или $route['([a-zA-Z0-9]+)']
.
Вы можете использовать это в файле маршрута:
$route['(:any)'] = "controller_name/$1"; $route['(:any)/(:any)'] = "controller_name/$1/$1"; $route['(:any)/(:any)/(:any)'] = "controller_name/$1/$1/$1";
Попробуй это:
$route['user'] = 'profile/user';
Не знаете какой-либо общий способ сделать это
Возможный дубликат Как скрыть имя контроллера в URL-адресе в CodeIgniter?
Если я правильно понял ваш вопрос, вы просто хотите добавить catchall к самому концу вашего файла маршрутов. Подобно:
$route['(:any)'] = 'profile/index';
Это поймает все, что не поймано другим маршрутом, поэтому убедитесь, что этот скрипт содержит логику, чтобы определить, когда должен быть представлен 404.