Remova index.php no CodeIgniter

Por padrão, a estrutura roteia tudo por meio do arquivo index.php. Você pode alterar esta funcionalidade padrão usando mod_rewrite.

Ajuste seu arquivo config.php em /application/config/config.php

Mudança:

$config['index_page'] = 'index.php';

Para:

$config['index_page'] = ' ';

Em seguida, crie um arquivo .htaccess na pasta raiz usando as seguintes regras de reescrita:

RewriteEngine on
RewriteCond $1 !^(index.php|css|js|images|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Agora, em vez de ir para http://example.com/index.php, você pode apenas fazer http://example.com

Pegadinhas

Se não estiver usando o diretório raiz em seu servidor da web, você precisará alterar a última regra de reescrita para corresponder ao caminho do diretório raiz do aplicativo. Por exemplo, se meu aplicativo estava localizado em:

/var/www/html/app1

Eu teria que incluir “app1” na última regra assim:

RewriteRule ^(.*)$ /app1/index.php/$1 [L]

Se a regra de reescrita não estiver funcionando, certifique-se de permitir arquivos .htaccess em seu arquivo de configuração do Apache. A seção do diretório deve conter uma opção AllowOverride All:

<Directory “/ var / www / html / app1”>
   Opções Índices FollowSymLinks
   AllowOverride Todos os
   pedidos permitir, negar
   Permitir de todos
</Directory>

Não se esqueça de que qualquer mudança no arquivo de configuração do Apache exige a reinicialização do serviço!