Foros del Web » Administración de Sistemas » Apache »

Mod Rewrite

Estas en el tema de Mod Rewrite en el foro de Apache en Foros del Web. Hola tengo una pagina web que me gustaria redireccionar usando el Mod Rewrite, he visto varios ejemplos de como hacerle pero ninguno me ha funcionado. ...
  #1 (permalink)  
Antiguo 09/06/2009, 14:03
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 7 meses
Puntos: 0
Mod Rewrite

Hola tengo una pagina web que me gustaria redireccionar usando el Mod Rewrite, he visto varios ejemplos de como hacerle pero ninguno me ha funcionado.

esta es mi pagina
w w w .mipagina. c o m /anuncio.php?user1

y me gustaria que se viera como

w w w .mipagina. c o m /user1

donde: anuncio.php es el scrip con la informacion amostrar y "user1" es un dato tomado de la base de datos mysql (previamente guardado en la BD)

Alguien me puede ayudar a crear el archivo para poder hacer esto?

Gracias.
  #2 (permalink)  
Antiguo 09/06/2009, 14:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Mod Rewrite

Puede ser:
Código Apache:
Ver original
  1. RewriteRule ^(.*)$ anuncio.php?$1
Claro, debes agregar un RewriteCond apropiado para que no produzca una redirección interminable (que sólo redireccione en caso de que no existe ningún archivo o directorio con ese nombre)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 09/06/2009, 14:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Respuesta: Mod Rewrite

Tema movido desde PHP.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 09/06/2009, 14:27
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Mod Rewrite

Bueno para eso necesitas habilitar el mod_rewrite en la configuración de su servidor (sea local o no). Luego debes declarar un .htaccess - sobre el que te recomiendo buscar más información en la web -. Este archivo debe estar en la misma ubicación donde se encuentra los archivos que inciden en los procesos de enlace, es decir, en tu caso el archivo .htaccess debe estar en la misma ubicación que anuncio.php.

El archivo .htaccess para tu caso sería de esta forma:

#Options +FollowSymLinks
RewriteEngine on
RewriteRule ^anuncio/(.+)$ anuncio.php?el_nombre_uses_para_esta_variable=$1 [L]

Y ahora para hacer los links seria:

<a href='www.tudominio.com/articulo/variable</a>

donde www.tudominio.com corresponde a tu web o que también puede ser local, en sea caso seria http://localhost o mejor conocido como http://127.0.0.1

/articulo seria el nombre del archivo en tu caso articulo.php. Esto es suponiendo que el archivo esta en la carpeta raíz, es decir, dentro de www y ya.

y la variable no es mas que el valor que quieres enviar para hacer la consulta. Por general esto seria una variable que obtienes luego de hacer una consulta a la base de dato. En este caso seria algo como:

echo"<a href='http://www.tudominio.com/articulo/".$row["id_articulo"]." '> el link</a>";

Al clickear ese link enviarás esa varible por get. Al recibir esa varible (bien sea en otra pagina o el misma) debes recibirla con el nombre de la variable que declaraste en el archivo .htaccess (recuerdas: el_nombre_uses_para_esta_variable=$1 ? ) Deben coincidir para que funcione !.

Creo que es todo. Bueno no esta de mas mencionarte que en caso de que esa variable que quieras enviar como url amigable (así se le llama a esto, tiene un porqué, por eso te recomiendo que investigues un poco al respecto) tenga espacio en blancos y uno que otro carácter debes depurar dicha cadena. Por ejemplo:

Tu variable: hola nuevo mundo

Cadena depurada: hola-nuevo-mundo

Esto lo logras con una función en php que puedes desarrollar (sino también puedes pedir información al respecto por aquí...estamos para ayudar)

Mmm creo que se me olvida algo... bueno ahorita no recuerdo. Prueba eso y cualquier duda solo pregunta. Saludos y suerte
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer

Última edición por p3rikl3s; 09/06/2009 a las 17:14
  #5 (permalink)  
Antiguo 11/06/2009, 11:35
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Mod Rewrite

muchas gracias, voy a provar y publico resultados.
  #6 (permalink)  
Antiguo 11/06/2009, 12:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Mod Rewrite

Publicando resultados:

Al parecer el principal problema que tenia era el del script hice esta modificacion para detectar la variable utilizada
Código:
//en mi scrip anuncio.php

if (isset($HTTP_GET_VARS['Usuario'])){
	$Usuario=$HTTP_GET_VARS['Usuario']; //variable Usuario

} else {
	$Usuario="";
}

//continua
despues utilice este codigo para el mod rewrite

Código:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^anuncio/(.+)$ anuncio.php?Usuario=$1 [L]
y trabaja muy bien, en lugar de poner mi pagina como estaba

w w w .mipagina. c o m /anuncio.php?Usuario=user1

lo pone asi:

w w w .mipagina. c o m /anuncio/user1

ahora mi pregunta es si seria posible que apareciera asi

w w w .mipagina. c o m /user1

hice esta modificacion al mod rewrite

Código:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.+)$ anuncio.php?Usuario=$1 [L]
pero en mi scrip me pone que la variable $Usuario es anuncio.php en lugar de user1.

Saben como puedo solucionar esto?

gracias por su ayuda.
  #7 (permalink)  
Antiguo 11/06/2009, 12:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Mod Rewrite

Como te había comentado, debes usar RewriteCond para que sólo afecte cuando no sea un archivo. Prueba así:
Código:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ anuncio.php?usuario=$1
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 11/06/2009, 13:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Mod Rewrite

Muchas gracias, funciono al 100%

era lo que me faltava.
  #9 (permalink)  
Antiguo 01/09/2009, 11:40
 
Fecha de Ingreso: agosto-2009
Ubicación: Quito
Mensajes: 28
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Mod Rewrite

y si tengo mas variables como seria el ejemplo?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:32.