Skip to content

Instantly share code, notes, and snippets.

@yesidays
Created March 17, 2012 19:42
Show Gist options
  • Save yesidays/2064699 to your computer and use it in GitHub Desktop.
Save yesidays/2064699 to your computer and use it in GitHub Desktop.
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
Copy link

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
Copy link

RoverWire muy buena alternativa!

@gonzalojpv
Copy link

nice! me sirvio, gracias!

Copy link

ghost commented Oct 3, 2013

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

@EEpsilon
Copy link

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

@roosembert
Copy link

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

@calberto185
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
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
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
Copy link

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

@jhonkey
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