« Sms-sender liberado | Página de inicio | Sabado 2:40 am »
12.05.2005
Usando el mod_rewrite de Apache
Si bien el buen Fede (no confundir con el Federico que no tiene nada de bueno :P) ya hablo de sus friendly URLs hace algun tiempo, dejo mi ejemplo y explicacion mas al estilo hagalo usted mismo con el que tanto me identifico :P
Que es mod_rewrite
Digamos que el Apache toma la URL ingresada en el navegador, y la transforma en otra, siguiendo ciertos parametros, de forma totalmente invisible y limpia para el cliente (osea, al cliente no le cambia la URL que ingreso).
Como lo hace? ni idea :P. Pero su funcionamiento es muy sencillo. y se logra en 3 pasos:
- Habilitar el mod_rewrite en el httpd.conf de apache
- Crear un documento .htaccess en el directorio donde vamos a tener friendly URLs
- Crear la logica que interpretara la URL
Para el primer paso, bastara con descomentar la linea que dice:
#LoadModule rewrite_module modules/mod_rewrite.so# sera suficiente (y reiniciar Apache, no?).
Para el segundo paso, crear un archivo que se llame .htaccess con este codigo:
RewriteEngine on
RewriteRule post/([0-9-a-z-A-Z-_]+) index.php?post_id=$1
RewriteRule user/([0-9-a-z-A-Z-_]+) index.php?user_id=$1print ("$post_id");
print ("$user_id");Es todo! sino anda, saben donde quejarse ... en lo de Fede :P.
Para probarlo, suponiendo que colocaron los archivos en el directorio raiz de su sitio, deben ir a www.susitio.com/post/cualquier_cosa_que_pongan_va_a_aparecer_en_el_Archivo ;)
23:05 Anotado en Programación | Permalink | Enviar a Email
Comentarios
lastima que en mi server windows, no hay apache :(
aun asi, es muy interesante este post.
Anotado por: stan | 13.05.2005
Oh! como que no usas Apache? Usas IIS entonces?
Si es asi, se de alguien que estaba buscando esto para ese sistema... (alguien: Pablo Viojo ;)).
Anotado por: Diego | 13.05.2005
Stan, justo ayer me encontre con algo parecido al mod_rewrite para el IIS (open source) ahora no me acuerdo como se llamaba pero mañana te paso el nombre.
Anotado por: Pablo Viojo | 13.05.2005
Jaja, ese soy yo Diego, encontre "eso" (justo ahora no me acuerdo el link, que desgracia). Es opensource y soporta las mismas expresiones que el mod_rewrite ya que utiliza unas funciones similares en potencia a las que usa el Apache.
En realidad no lo pude hacer funcionar, pero creo que esto es más bien un problema de incapacidad propia y de falta de tiempo que del programa.
Anotado por: Pablo Viojo | 13.05.2005
Juas, era custion de apretar el enviar en el post anterior para que apareciera.
http://www.iistoolshed.com/
Se llama URL Rewrite (y si, como si no?). Si te funciona bien me avisas a ver como se hace :D jeje
Anotado por: Pablo Viojo | 13.05.2005
Al margen: Che! Federico es puro amor! No sean crueles con él. :P
Anotado por: Federico | 13.05.2005
chido, voy a leer haber que tal, thanks por el link pablo :P y ya no hablen mal del federico ni del diego, que esos dos nombres hay un friego en la blogosfera, pero haber, cuantos Estanislao hay en la blogosfera... oficialmente solo yo :P
Anotado por: stan | 13.05.2005
La verdad que es un invento genial. No sólo hace urls usables, sino que tambien estándares. Sin nombrar la indexación en los buscadores. Es lo primero que voy a hacer apenas me cambie de hosting :P
Anotado por: Lucas | 13.05.2005
Quería acotar nomás, que Apache 1.2 trabaja con expresiones regualres POSIX por lo que se pueden hacer miles y miles de cosas con mod_rewrite.
El que esté interesado: http://httpd.apache.org/docs/mod/mod_rewrite.html y http://www.fedeblog.com.ar/files/expresiones_regulares.html
Suerte
Fede
Anotado por: Fede | 13.05.2005
Tengo una duda todavia, como el navegador interpreta que lo que pongamos corresponde a tal o cual post?
Los friendly URLs de Fede (y mios tmb ^.^) tiene el ID del post en la URL...
Anotado por: [NiRVaNa] | 15.05.2005
El navegador no interpreta nada, porque son modificaciones que se dan a nivel del servidor. El navegador pasa el url que tu ingresaste y el modulo encargado de la reescritura es el que hace el cambio.
Anotado por: Pablo Viojo | 15.05.2005
Exactamente, entonces el apache te transforma la url en algo como sitio.com/index.php?post=nombre_del_post.
En index.php tenes un script que captura esa variable, busca ese post y te lo muestra, es requete simple :).
Anotado por: Diego | 15.05.2005
Jeje, algo asi como "one index.php to rule them all", LOL :D
Yo lo que hago habitualmente es tener un archivo index.php que actua como "receptor" de todos los pedidos y en funcion de los parametros que recibe llama a otros archivos que es donde se procesa la lógica correspondiente pero esto depende un poco del tipo de aplicacion que quieras desarrollar. Si es para manejar posts, creo que tener todo el codigo en un mismo archivo estaría bien.
De ultima es una cuestión de comodidad simplemente, yo prefiero tener codigo separado en distintos archivos
Anotado por: Pablo Viojo | 16.05.2005
No, claro que el include te facilita muchisimo la tarea, sino seria un verdadero caos manejar todo desde un unico archivo!
Ya demasiado que debo conformarme sin haber hecho jamas mi aplicacion de modulos en PHP... al menos usando includes se logra un codigo mas limpio!
Lo cual me da tema para otro post... :D
Anotado por: Diego | 16.05.2005
mmm para códigos limpios y claros seria mejor evitar el uso de acciones limitadas bajo Register Globas. Recuperar variables enviadas por post , url etc.. , utilizando variables a pelo '$variable' es aparte de inseguro una cerdada.
Para ello apartir de PHP4.X aparecieron las SUPER GLOBALES, las cuales aparte de seguras funcion SIEMPRE de tal forma que nuestros scripts seran mucho más portables, seguro y legibles sin depender de la configuracion de php.ini.
Deberias mirartelo ;) un salud ( gracias por este post, me ha ayudado )
Anotado por: Blid | 31.05.2005
Pues he intentado aplicar el mod_rewrite en mi sitio, supuestamente me aparece como cargado.
Pero no pude hacerlo funcionar, algo le falta :S
Anotado por: stan | 02.06.2005
Pues a mi tampoco me funciona: ni en local ni en la url dada.
¿Qué me sujeris para:?
http://www.autocasionextremadura.com/catalogo/ficha_anuncio.php?ref=51
y
http://www.autocasionextremadura.com/catalogo/ficha.php?refweb=2170
Véase el complicado añadido: cada script (fichas) carga a su vez por url la foto.
Mi ensayo ha sido algo como:
RewriteEngine On
RewriteBase /catalogo/
RewriteRule ^ficha-([0-9]*).html$ ficha_anuncio.php?ref=$1
Soltado en el raiz.
a ver, a ver.
Anotado por: pepeitor | 05.12.2005
AtSiam.com is a full-service travel agency offering online reservations for hotels and resorts at discounted prices for destinations in Thailand.
Anotado por: thailand hotels | 23.01.2006
Pues ya esta!!!!!
Lo veis en www.autocasionextremadura.com
Mod_rewrite combinado con Site Map de Google: combinación que ofrece resultados!!!
Anotado por: Pepeitor | 11.02.2006




