Hífen nos controllers do codeigniter

Recentemente o analista da agência onde trabalho (analista web que fique claro), me disse que o google vê diferença sim, entre hífens(-) e underlines (_), e que os primeiros são preferíveis.
Resumindo a opera, precisei mudar a forma como o codeigniter interpreta os controllers através da uri, pois como sabemos, não é possível usar hífen nos nomes dos controllers.
Entre todas as soluções que pesquisei, encontrei uma no fórum do codeigniter.com que achei bem simples e funcional, segue:
Dentro da pasta application/config abra o arquivos hooks.php e adicione a ele as seguintes linhas:

var $remove_acentos    =  TRUE;

$hook['pre_system'] = array(
'class' => '',
'function' => 'prettyurls',
'filename' => 'myhooks.php',
'filepath' => 'hooks',
'params' => array()
);

Em seguida dentro da pasta application/hooks, crie um arquivo com o nome informado no passo anterior, neste caso myhooks.php, com a função também informada no passo acima:

function prettyurls() {
if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') {
$newkey = str_replace('-','_',key($_GET));
$_GET[$newkey] = $_GET[key($_GET)];
unset($_GET[key($_GET)]);
}
if (isset($_SERVER['PATH_INFO'])) $_SERVER['PATH_INFO'] = str_replace('-','_',$_SERVER['PATH_INFO']);
if (isset($_SERVER['QUERY_STRING'])) $_SERVER['QUERY_STRING'] = str_replace('-','_',$_SERVER['QUERY_STRING']);
if (isset($_SERVER['ORIG_PATH_INFO'])) $_SERVER['ORIG_PATH_INFO'] = str_replace('-','_',$_SERVER['ORIG_PATH_INFO']);
if (isset($_SERVER['REQUEST_URI'])) $_SERVER['REQUEST_URI'] = str_replace('-','_',$_SERVER['REQUEST_URI']);

}

Agora basta habilitar os hooks no config.php e provavelmente tudo funcionará como o esperado:

$config['enable_hooks'] = TRUE;

Agora um controller que antes era chamado através da url “conheca_a_empresa”, por exemplo, poderá ser chamado através da uri “conheca-a-empresa”, sem que você tenha a necessidade de mexer na estrutura que você já tinha.
O mais legal desta solução é que você pode continuar chamando os controllers da maneira antiga, o que garante que sua aplicação continue funcionando sem nenhum tipo de problema.


Sobre o Post