Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
htaccess para eliminar index.php en Codeigniter
RewriteEngine on
RewriteCond $1 !^(index\.php|images|php|script|styles|js|css)
RewriteRule ^(.*)$ /index.php/$1 [L]
@RoverWire

This comment has been minimized.

Copy link

RoverWire commented Mar 23, 2012

Esta funcional, yo uso una configuración como la siguiente:

#Activamos la reescritura SI SOLO SI el mod_rewrite se encuentra activado, así se evitan errores 500
<IfModule mod_rewrite.c>

    # Suponiendo que el listado de directorios esté desactivado, permitimos indexación y activamos el rewrite
    Options +FollowSymLinks -Indexes
    RewriteEngine on

    # Usualmente "AllowOverride" debería estar en 'All' en el apache.conf/vhost.conf, pero si no descomentas lo siguiente para evitar un error 404
    #AllowOverride All

    # Se supone que la regla aplica desde el directorio donde se encuentra el .htaccess pero si es necesario lo especificas, siendo / la raiz de dominio
    #RewriteBase /

    # con esta instrucción bloqueamos el acceso a la carpeta system, si es que se encuentra en el directorio web
    RedirectMatch 403 ^/(system).*$

    # Antes de redireccionar, se verifica que la petición no sea a un directorio o archivo existente
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Si el archivo/directorio no existe, redireccionamos
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

y listo! un .htaccess a prueba de balas :)

@soyFelixBarros

This comment has been minimized.

Copy link

soyFelixBarros commented Mar 18, 2013

RoverWire muy buena alternativa!

@gonzalojpv

This comment has been minimized.

Copy link

gonzalojpv commented Jul 5, 2013

nice! me sirvio, gracias!

@emersonhv

This comment has been minimized.

Copy link

emersonhv commented Oct 3, 2013

A mi no me servio, no se si sera porque tengo VirtualHost, me podrían ayudar?

@EEpsilon

This comment has been minimized.

Copy link

EEpsilon commented Nov 19, 2015

A mi tampoco me sirvió, tengo todo instalado, revisé mod_rewrite con un phpinfo y está instalado igual.

@roosembert

This comment has been minimized.

Copy link

roosembert commented Jan 20, 2017

Una pregunta, si tengo lo siguiente:
localhost/nombreproyecto/Controlador/Funcion?parametro=1&parametro=2&parametro=3
Como configuraria el htaccess?

@calberto185

This comment has been minimized.

Copy link

calberto185 commented Feb 21, 2017

hola una pregunta!!!.
yo estoy trabajando con una plantilla la cual esta fuera system y aplicacion, y mi controlador de inicio es login, donde cargo la vista y tambien un metodo para validar los datos del login. mi pregunta es por que cuando me logeo no me redirecciona a la url con el controlador y el metodo que ya les mencione "velificar". estube probando con la simplificacion de index.php en el .htaccess la cual si funciona pero cuando lo pongo que no testringa la carpeta donde se aloja la plantilla se quita los estilos de la vista y para este caso si me procesa los datos cuando me logeo, pero como ya sabran esto me restringe la carpeta de la plantilla.
Nota: para el form del login estoy utilizando del helper de codeigniter. este es mi codigo vista login:

<?= form_open('main/identify') ?> <div class="input-group"> <span class="input-group-addon" id="basic-addon1"> <i class="fa fa-user" aria-hidden="true"></i></span> <?= form_input($user) ?> </div> <div class="input-group"> <span class="input-group-addon" id="basic-addon2"> <i class="fa fa-key" aria-hidden="true"></i></span> <?= form_password($pass) ?> </div> <div class="text-center"> <?= form_input($submit) ?> </div> <?= form_close() ?>

este el codigo del controlador:

public function index(){
$this->load->view('main');
}
public function identify(){
$user = $this->input->post('username');
$pass = $this->input->post('password');
$result = $this->servicefire->Auth($user, $pass);
if ($result != null) {
header('location:'.base_url('admin/index'));
}else{
header('location:'.base_url());
}
}

este es mi .htaccess:

RewriteEngine on
RewriteCond $1 !^(index.php|robots.txt|sitemap.xml|template)
RewriteRule ^(.*)$ index.php/$1 [L]

@evigra

This comment has been minimized.

Copy link

evigra commented Nov 10, 2017

Duda, el .htaccess lo estan agregando en cada APP
O en raiz
es mi primer dia en CodeIgniter

@gamunax

This comment has been minimized.

Copy link

gamunax commented Jan 30, 2018

Hola, debes agregarlo en la raiz de tu aplicacion.
ejemplo:

  • application
  • system
  • .htaccess -> en la raiz debe ir
@joshua1983

This comment has been minimized.

Copy link

joshua1983 commented May 24, 2018

Hola, a los que no les funciona aun, recuerden que deben habilitar en el httpd.conf de apache la propiedad AllowOverride a All

@jhonkey

This comment has been minimized.

Copy link

jhonkey commented Jun 14, 2018

ERROR falta un (?):

Si el archivo/directorio no existe, redireccionamos

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

CORRECTO:
RewriteRule ^(.*)$ index.php?/$1 [L]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.