Eliminando “index.php” do CodeIgniter no Xampp 2.5

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.

5 Comentários para “Eliminando “index.php” do CodeIgniter no Xampp 2.5”

  1. Anderson Oliveira

    Até que enfim! consegui, já estava ficando louco com essa url feia!
    muito obrigado rogerio
    li 10 artigos antes desde seu, e nenhum deu certo, mas baixei o seu htaccess desconpactei no diretorio correto e deu certo!

  2. Rogerio Coli

    Obrigado pelo comentário. Conto com sua colaboração na divulgação do site. Abraço.

  3. Harry

    Rogério, não consigo entender direito esse negócio.Simplesmente comigo não funciona. Alterei o .htaccess no meu diretório raiz mas aparece página de erro, meu site não aparece mais. O que mais devo fazer alem de alterar o .htaccess???
    D√° para explicar na liguagem “leiguess”??????

  4. Harry

    Acho que eu mesmo descobri qual o problema. Não é para qualquer site, não é mesmo? Tem que ter esse tal de CI CodeIgniter que eu nem sei do que se trata. E Xampp 2.5. No meu servidor deve ser tudo diferente. Não consegui achar nenhum posto que explique como eliminar index.php GERAL, de qualquer site existente na terra.

  5. Rogerio Coli

    Ol√° Harry e obrigado pelo seu contato. √Č exatamente isso, o tutorial √© para quem usa o Framework PHP CodeIgniter que “escreve” esse valor na URL do navegador seguido de outros par√Ęmetros, o que n√£o √© recomend√°vel na nova web 2.0 que preza por URLs amig√°veis. Mas pelo que entendi, voc√™ n√£o quer que apare√ßa em suas URLs o sufixo index.php, certo?! Basta colocar os seus links sem essa extens√£o que dever√° fucncionar. Ex: em http://www.rcoli.com.br/index.php, basta colocar somente http://www.rcoli.com.br/ que ir√° funcionar. √Č uma configura√ß√£o padr√£o do servidor Apache, o mais usado na internet. Atente que essa regra vale tamb√©m para p√°ginas em html como index.html. Espero ter ajudado. Ab√ß.

Comente este artigo!