Como remover o nome do controlador do URL no codeigniter?

Eu tenho um controlador chamado “perfil” e o URL do perfil do usuário é www.example.com/profile/user

Eu já estou usando o reencaminhamento do codeigniter no arquivo de rotas

$route['profile/(:any)'] = "profile/index"; 

O que eu procuro é remover o nome do controlador de perfil do URL para que ele seja SEO e amigável ao usuário.

por exemplo

www.example.com/user

alguma sugestão?

Você pode tentar qualquer um desses

 // 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"; 

Sua class pode parecer assim

 class Profile extends CI_Controller { public function index($id) { // $id is your param } } 

Atualização: (Cuidado)

Lembre-se disso, se você tiver uma class Someclass e você usa url como o seu yourdomain/Someclass , isso será roteado para o profile/index/$1 se você tiver $route['(:any)'] ou $route['([a-zA-Z0-9]+)'] .

Você pode usar isso em um arquivo de rota:

 $route['(:any)'] = "controller_name/$1"; $route['(:any)/(:any)'] = "controller_name/$1/$1"; $route['(:any)/(:any)/(:any)'] = "controller_name/$1/$1/$1"; 

Tente isso:

 $route['user'] = 'profile/user'; 

Não conhece nenhuma maneira genérica de fazê-lo

Possível duplicado de Como ocultar o nome do controlador na url no CodeIgniter?

Se eu entender sua pergunta corretamente, você só quer adicionar um catchall até o final do seu arquivo de rotas. Gostar:

 $route['(:any)'] = 'profile/index'; 

Isto irá pegar tudo o que não é pego por outra rota, portanto, certifique-se de que este script contém lógica para determinar quando um 404 deve ser apresentado.