Roteamento URI
Tipicamente há uma relação um-a-um entre a string URL e seu correspondente controller classe/método. Os segmentos em um URI normalmente seguem este padrão:
www.seu-site.com/classe/funcao/id/
Em alguns momentos, porém, você pode querer remapear estar relação para que uma classe/função diferente possa ser chamada no lugar daquela correspondente à URL.
Por exemplo, vamos dizer que você queria suas URLs tenham este protótipo:
www.seu-site.com/produto/1/
www.seu-site.com/produto/2/
www.seu-site.com/produto/3/
www.seu-site.com/produto/4/
Normalmente o segundo segmento da URL está reservado para o nome da função, mas no exemplo acima há um ID de produto no lugar. Para resolver isto, o Code Igniter permite que você remapeie o handler URI.
Configurando suas próprias regras de roteamento
Regras de roteamento são definidas em seu arquivo application/config/routes.php.
Nele, você verá uma array chamada $route que permite que você espeficique seus próprios critérios.
As rotas podem tanto ser espeficicadas usando caracteres coringa (wildcards) como Expressões Regulares.
Uma típica rota coringa se parece com esta: Numa rota, a chace da array contém o URI a ser igualado, enquanto que o valor da arry contém o destino para qual ele deverá ser encaminhado, a nova rota.
No exemplo acima, se a palavra literam "produto" for encontrada no primeiro segmento da URL, e um número for encontrado no segundo segmento,
a classe "catalogo" e o método "produto_busca" serão utilizados no lugar. Você pode igualar valores literais ou então usar dois tipos de coringas:
:num :num irá igualar um segmento contendo apenas números. Note:
As rotas serão executadas na ordem em que forem definidas.
Rotas de nível mais alto sempre terão precedência às de nível mais baixo. Aqui vão alguns exemplo de roteamento: Qualquer URL contendo a palavra "jornauls" no primeiro segmento irá ser remapeada à classe "blogs". Qualquer URL contendo o segmento blog/joe será remapeada à classe "blogs" e ao método "users". O ID será 'setado' como "34". Qualquer URL contendo "produto" como primeiro segmento, e nada no segundo, será remapeada à classe "catalogo" e ao método "produto_busca". Importante: Não use barras invertidas ou normais. Se você preferir, pode usar expressões regulares para definir suas regras de rotas. Qualquer expressão regular válida é permitida, assim como back-references. Note: Se você usar back-references, deve usar a sintaxe com o sinal de dolar ($) no lugar da de dupla barra invertida (//). Uma típica rota RegEx se parece com algo assim: No exemplo acima, um URI similar a produtos/camisas/123 iria chamar a classe controller camisas e a função id_123. Você pode também misturar coringas com expressões regulares. Há duas rotas reservadas: Esta rota indica qual classe controle deverá ser chamada se o URI não contiver dados, o que seria o caso quando alguém carrega a URL
raiz. No exemplo cima, a classe "bem-vindo" seria carregada. Você é encorajado a sempre ter uma rota default, do contrário uma página 404 irá aparecer como default. Esta rota permite que você configure a palavra secreta, que quando presente na URL, dispara o recurso de scaffolding.
Por favor, leia a página Scaffolding para detalhes.Caractere Coringa - Wildcards
$route['produto/:num'] = "catalogo/produto_busca";
:qualquer
:qualquer irá igualar um segmento contendo qualquer caracter.Exemplos
$route['journals'] = "blogs";
$route['blog/joe'] = "blogs/users/34";
$route['produto/:qualquer'] = "catalogo/produto_busca";
Expressões Regulares
$route['produtos/([a-z]+)/(\d+)'] = "$1/id_$2";
Rotas Reservadas
$route['default_controller'] = 'bem-vindo';
$route['scaffolding_trigger'] = 'scaffolding';