CodeIgniter: mod_rewrite
El 30 Marzo 2008 – 16:17 | por Isern Palaus
Uno de los principales inconvenientes de CodeIgniter es, en parte, visual en la dirección URL. Solemos tener nuestros programas con http://localhost/index.php/controlador/funcion y seguramente quedaría mucho mejor algo tipo: http://localhost/controlador/funcion, ¿verdad? Pues bien, para hacer esto necesitaremos usar Apache y el modulo mod_rewrite.
Para empezar será necesario saber si estamos usando mod_rewrite en Apache. Lo más fácil es, directamente, ir al archivo de configuración (el archivo http.conf) y buscar: mod_rewrite.so. Deberíamos encontrar la siguiente línea:
[code]LoadModule rewrite_module modules/mod_rewrite.so[/code]
Sin embargo, si esta contiene un símbolo de almohadilla (#) es que no esta activado. Si lo contiene al principio, lo borramos, guardamos y reiniciamos el servidor. Así, mod_rewrite se iniciará cada vez al iniciar Apache.
Ahora es el momento de crear nuestro archivo de configuración especifico en el directorio donde este nuestro index.php. A este archivo le pondremos de nombre .htaccess y contendrá lo siguiente:
[code lang="php"]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
[/code]
Bien, con esto ya nos ocupamos de cuando se acceda a nuestra web automáticamente, lo que hace el servidor web, es catalogar como si accediéramos a la misma pero con index.php/ al principio. Solo nos queda una cosa, que CodeIgniter nos construya los enlaces sin el index.php/. De este modo, accedemos al archivo config.php y cambiaremos la variable $config['index_page']:
De:
[code lang="php"]
$config['index_page'] = "index.php";
[/code]
A:
[code lang="php"]
$config['index_page'] = "";
[/code]
Y esto es todo para tener unas direcciones URL mucho más limpias. Espero que les haya ayudado de nuevo y hasta pronto.
Tags: apache, CodeIgniter, framework, mod_rewrite, php
6 Comentarios a “CodeIgniter: mod_rewrite”
Por Lagarto el May 20, 2008 | Responder
Esta muy bien este tutorial seguro que a mucha gente le viene de fabula. También iria muy bien ya que se usa htaccess a restringir el acceso a segun que carpetas (es decir a todas menos el application).
Un saludo!
pd:perdon pero le di al enviar sin querer mientras escribia
Por Santiago el Jul 9, 2008 | Responder
Yo probe el .htaccess y no me funciono bien, me decia “No input file specified” asi que busque y lo q si me funciono bien fue esto:
[code]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
[/code]
Fuente:http://codeigniter.com/wiki/Dreamhost_.htaccess/
Lo segundo estuvo interesante, gracias!
Por davidh el Nov 19, 2008 | Responder
Perfecto santiago, habia tenido problemas con el rewrite -el que todo mundo dice que funciona- la solucion presentada me funcionó a la perfeccionó en mi hosting (dattatec).
Por Paco Guzman el Jul 3, 2009 | Responder
Muchas gracias igual hicimos una actualización en el server y ya no jalo el codeigniter, muchas gracias por estas lineas. Regresaron a la vida nuestro sitio
Por David el Jul 26, 2009 | Responder
muy bueno…
cómo podría construir una url como metroflog o fotolog
hasta ahora tengo algo asi en codeigniter
http://www.miweb.com/index.php/usuarios/nombre_usuario
Gracias a tu post, he logrado
http://www.miweb.com/usuarios/nombre_usuario
ocultar el index, pero cómo logro ocultar el controlador usuarios y quede de la siguiente manera
http://www.miweb.com/nombre_usuario
donde nombre_usuario
seria el parametro para ejecutar el constructor de mi controlador usuarios
Gracias de antemano. Saludos