Quitar index.php de CodeIgniter

Para poder quitar ‘index.php’ de nuestra URL debemos realizar esto

  1. Modificar el archivo .htaccess
  2. Modificar variables en conf.php
  3. Usar el módulo mod_write de Apache
  4. Modificar httpd.conf
  5. 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

CodeIgniter & ElliotHaughin

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s