quarta-feira, 1 de maio de 2013

Remover index.php Code Igniter Etc

Olá, espero com este post auxiliar iniciantes em Code Igniter a remover o index.php da url de seus sites, com os passos que segui para resolver na minha máquina.

Primeiro segui os passos do blog TIDoc, criação do .htaccess e ajustes no config.php do CI. Quase deu certo, sigam eles também:

1. Habilitar o ModRewrite no Apache

Abra o httpd.conf e descomente a linha LoadModule rewrite_module modules/mod_rewrite.so e reinicie o apache.

No meu caso, Ubuntu 13.04, fiz isso através dos seguintes comandos, inspirado pelo posto do Tiago Passos:
 

2.  htaccess

Crie um .htaccess na raiz do seu projeto. O arquivo deve estar no mesmo nível da pasta system.

Muita atenção com as barras (/). A maioria das dicas e tutoriais que você vai encontrar por ai leva em conta que seu projeto está no document root e não em um alias (diretório virtual). Se você estiver usando um diretório virtual use o RewriteBase para indicar qual a url base de seu projeto e em RewriteRule remova a barra da frente de index.php para indicar que o arquivo não está na raiz do servidor (document root) e sim no diretório virtual.


3. config.php

É necessário alterar uma linha do config.php na pasta application. 
Altere a linha $config['index_page'] = "index.php" para $config['index_page'] = "".

Bom, teoricamente você terminou aqui. No meu caso aconteceram dois problemas, primeiro que nas configurações do meu diretório virtual não estava permitindo executar as regras, então executei o seguinte comendo para abrir o arquivo de configurações:

E alterei as configurações para permitir as regras do .htaccess, trocando AllowOverride "none" por "All":

    <Directory /home/bolivar/sites/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>


No final das contas, após reiniciar o Apache, quebrou todos os links para CSS, JS imagens etc, consegui resolver adicionando a seguinte linha no .htaccess

RewriteRule ^assets/ - [L,NC]

Então meu arquivo .htaccess final ficou assim:

Com isso, consegui resolver na minha máquina local, agora ainda preciso ver se vai funcionar no servidor do cliente...

Documentação sobre .htaccess, RewriteRules e outras inspirações:
1 - http://httpd.apache.org/docs/2.2/howto/htaccess.html
2 - http://httpd.apache.org/docs/current/mod/mod_rewrite.html
3 - http://httpd.apache.org/docs/current/rewrite/intro.html
4 - http://tidoc.wordpress.com/2009/08/12/codeigniter-remover-index-php-da-url/
5 - http://blog.tiagopassos.com/2011/04/21/configurando-o-mod_rewrite-do-apache2-no-ubuntu-linux/

E recomendo também as video aulas em:
1 - http://net.tutsplus.com/sessions/codeigniter-from-scratch/

Nenhum comentário:

Postar um comentário