maio 4, 2011

Eliminando “index.php” do CodeIgniter no Xampp 2.5

Por Rogerio Coli

O objetivo deste tutorial é tentar ajudar o pessoal que está com dificuldades em configurar o CodeIgniter removendo a string “index.php” da URL.
No intuito de tornar as URLs dos meus projetos mais amigáveis li e reli vários tutoriais sem encontrar algum que realmente resolvesse o meu problema até que um amigo, André Neves, me emprestasse o livro do CodeIgniter do Ademir Cristiano Gabardo que foi bastante esclarecedor.

Estarei trabalhado com a versão 2.0.2 do CodeIgniter (CI) e com a versão 2.5 do Xampp.

Se você acabou de instalar o CI você deve remover o “default_controller” que é a classe padrão de carregamento de seu site para que o framework não carregue nenhuma classe padrão. Isto deve ser feito no arquivo: application\config\routes.php. Ache a linha do “default_controler” e apague a palavra “welcome”, como no exemplo abaixo.

// Antes
$route['default_controller'] = "welcome";
//Depois
$route['default_controller'] = "";

Agora ao recarregar a sua página pelo navegador, o CI encontrará um erro pois não achou o controller padrão e apresentará a pagina de erro padrão. Para voltar a acessar a classe welcome, você devera digitar agora na url o sufixo: “/index.php/welcome” (no meu exemplo a URL completa seria: “http://localhost/CodeIgniter_2.0.2/index.php/welcome”).

O próximo passo é copiar o arquivo “.htaccess” (baixe o ZIP) para a pasta raiz de seu projeto (veja a imagem mais abaixo). Ou ainda, abra o Notepad, copie e cole as linhas abaixo e salve como “.htaccess” (sem aspas) na raiz de seu projeto. É importante que não coloque espaços extras e nem quebras de linhas. Além disso, atente para salvar o arquivo com o nome “.htaccess” (sem aspas). Não esqueça do ponto antes do nome e cuidado para não salvar com uma extensão qualquer.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Clique para ampliar

Essas linhas são instruções que informam ao apache que caso o método de reescrita esteja desabilitado, que o habilite (linha 1). Informa também, as regras de aplicação de reescrita nas linhas 2 e 3 e finalmente na quarta linha, o que ele deve procurar para reescrever.

Volte ao navegador e recarregue a página agora retirando a string “index.php” (Ex: “http://localhost/CodeIgniter_2.0.2/welcome”)  , isso deve ser o suficiente para que ela não apareça mais. De qualquer forma é de boa prática configurar o framework para que não espere receber esta string na URL. Vá então em application/config/config.php e remova a configuração padrão de “index_page” como abaixo.

// Antes
$config['index_page'] = 'index.php';
// Depois
$config['index_page'] = '';

Fonte: Gabardo, Ademir Cristiano. CodeIgniter Framework PHP, Novatec – SP – 2010.