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: