Para poder quitar ‘index.php’ de nuestra URL debemos realizar esto
- Modificar el archivo .htaccess
- Modificar variables en conf.php
- Usar el módulo mod_write de Apache
- Modificar httpd.conf
- Reiniciar
De aquí en adelante nuestra instalación de CodeIgniter se llamará aplicacion_ci y se encuentra en
/usr/local/apache2/htdocs/aplicacion_ci
Modificar el archivo .htaccess
Es necesario modificar este archivo dentro de la carpeta de nuestra aplicación. Se encuentra en
/usr/local/apache2/htdocs/contest/.htaccess
Si no lo puedes ver, presiona Ctrl+H. Una vez abierto, encontrarás algo como
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Reemplaza todo eso por lo siguiente
<IfModule mod_rewrite.c>
RewriteEngine On
##NOMBRE DE LA APLICACION
#Cambia esta linea por el nombre de tu aplicacion
#Es decir, si nuestra aplicacion esta en
# /usr/local/apache2/htdocs/aplicacion_ci
#El nombre de la aplicacion sera
# /aplicacion_ci/
RewriteBase /aplicacion_ci
##PROTECCION DE SYSTEM
#Evita que alguna persona pueda entrar directamente al directorio system
#Si tu carpeta system tiene otro nombre, debes colocarlo aqui tambien
#Puedes usar la misma sintaxis para ocultar otros directorios
#Ademas, permite usar un controlador llamado System.php, lo cual, antes no era posible
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
##VERIFICAR EXISTENCIA DE ARCHIVO
#Si la URL no comienza con 'system', el servidor web verificara si existe algo que se relacione con
#la URL, como una imagen, script o directorio
#Si no existe, manda la peticion a index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
#Si no tenemos el modulo mod_rewrite instalado, todos los 404
# pueden ser enviados a index.php, y todo trabaja de manera normal
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
Modificar variables en conf.php
$config['index_page'] = ”;
$config['uri_protocol'] = ‘QUERY_STRING’;
Usar el módulo mod_write de Apache
Para instalar Apache con mod_write, en caso de que no lo tengas habilitado, visita este post.
Modificar httpd.conf
Hay que asegurarnos de que Apache nos permita usar .htaccess
Es necesario modificar estas líneas
<Directory "/usr/local/apache2/htdocs"> ... Options FollowSymLinks AllowOverride FileInfo ... </Directory>
Si te produce algún error, intenta con esto
<Directory "/usr/local/apache2/htdocs"> Options Indexes Includes FollowSymLinks MultiViews AllowOverride AuthConfig FileInfo Order allow,deny Allow from all </Directory>
Reiniciar
Por último, reinicia apache
apachectl restart
Fuentes