Removendo "index.php" da URL no CodeIgniter

Removendo index.php da URL no CodeIgniter

O CodeIgniter por padrão já dá suporte a URL amigáveis,  como os grandes frameworks em PHP, o grande problema é que ele ainda insiste em mostrar o arquivo index.php na URL o que deixa toda requisição horrível. Veja o padrão de URL na instalação padrão do CodeIgniter:

http://seusite.com.br/index.php/controller/method/parameter

Como deveria ser:

http://seusite.com.br/controller/method/parameter

Este problema é muito simples de resolver, basta configurar o servidor para trabalhar com uma sobrescrita de URL, siga o passo-a-passo a baixo:

Primeiro abra o arquivo config.php dentro da pasta \application\config e substitua as linhas abaixo:

$config[“index_page”] = “index.php”; para **$config[“index_page”] = “;

$config[“uri_protocol”] = “AUTO”;** para $config[“uri_protocol”] = “REQUEST_URI”;

Se você estiver usando um apache crie um arquivo .htaccess com o seguinte conteúdo:

1
2
3
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Se você estiver utilizando IIS você deverá criar um arquivo web.config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
    <system.webServer>
         <rewrite>
             <rules>
                 <rule name="Clean URL" stopProcessing="true">
                     <match url="^(.*)$" />
                     <conditions>
                         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                     </conditions>
                     <action type="Rewrite" url="index.php/{R:1}" appendQueryString="false" />
                 </rule>
             </rules>
         </rewrite>
     </system.webServer>
 </configuration>

Se você não conhece muito o CodeIgniter você poderá conhecer o nosso manual básico:

Curso básico de CodeIgniter para Noobs