Foros del Web » Programando para Internet » PHP »

Permalink!

Estas en el tema de Permalink! en el foro de PHP en Foros del Web. Hola! Como andan? Chicos despues de luchar, pude entender y comprender mas sobre como funciona esto!! bueno, les paso a comentar lo que tengo, en ...
  #1 (permalink)  
Antiguo 10/04/2010, 09:23
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Permalink!

Hola! Como andan?

Chicos despues de luchar, pude entender y comprender mas sobre como funciona esto!!

bueno, les paso a comentar lo que tengo, en mi pagina de busqueda.php tengo una funcion que me convierte las urls a "amigables".

busqueda.php
Código PHP:
<?php function urls_amigables($url) {
$url strtolower($url);
$find = array('á''é''í''ó''ú''ñ');
$repl = array('a''e''i''o''u''n');
$url str_replace ($find$repl$url);
$find = array(' ''&''\r\n''\n''+');
$url str_replace ($find'-'$url);
$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
$repl = array('''-''');
$url preg_replace ($find$repl$url);
return 
$url;
}
?>
luego, donde hago el muestreo de los productos, los hago asi:
busqueda.php (Mostrando links)
Código PHP:
echo "muestraproducto/".urls_amigables($url).""

y en el .htaccess lo trato de esta forma:
.htaccess
Código:
RewriteEngine on
RewriteRule muestraproducto/(.*)$ muestraproducto.php?=$1

Todo bien, ahora al menos me lee la direccion del muestraproducto/1 pero con un problema, no me encuentra el producto en la base de datos!! Ademas, me carga la pagina a medias, es decir, colores, imagenes y la redireccio. No se si esto ultimo tendra algo que ver o o, lo comento a modo de dar mas pistas.

Creo que estoy tratando mal la expresion regular en el .htaccess!
Pero la verdad no se que puede ser. ¿Alguno sabe?

Un abrazo
  #2 (permalink)  
Antiguo 10/04/2010, 09:35
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Permalink!

¿Dentro de tu php estás haciendo algo como $_GET['producto']? Porque dentro del .htaccess, tienes lo siguiente :

Código Apache:
Ver original
  1. RewriteRule muestraproducto/(.*)$ muestraproducto.php?=$1

Si te fijas, luego del ? no le pones un nombre al parámetro que pasará por la url. Deberías poner algo así :

Código Apache:
Ver original
  1. RewriteRule ^muestraproducto/(.*)$ muestraproducto.php?producto=$1

Con respecto a si está bien la expresión, creo que debería llevar el ^ al principio de la cadena, pero no estoy seguro

Prueba eso, y nos comentas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 10/04/2010, 10:01
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

spider_boy Muchisimas gracias, era eso lo que me faltaba, me olvide el ^ y ademas me comi el idproducto. Muchisimas, muchisimas gracias.!


Lo unico que ahora no puedo resolver es porque me carga la pagina con una forma visual distinta! Pero seguro es por el tema del tratamiento de los links, ahora me pongo a ver eso!
Nuevamente muchas gracias.!
  #4 (permalink)  
Antiguo 10/04/2010, 11:56
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Permalink!

De nada, para eso estamos
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 10/04/2010, 16:01
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

Hola de nuevo, no se q puede ser mi pagina deberia verse de esta forma:



pero luego de implemetnar los permalink (Urls amigables) se ve de esta otra forma:



Un abrazo
  #6 (permalink)  
Antiguo 10/04/2010, 17:34
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

mmm ahora q miro bien, tengo estos require que pueden ser los q estan dando problemas?

require_once("cabecera.php");

en el cabecera tengo el menu de login, register, mi cuenta y esas cosas que como ven en las imagenes anteriores se ve mal.
Cuando paso el mouse sobre los links del menu (cabecera) me salta una direccion del tipo localhost/ventafacil/muestraproducto/register.php Donde no deberia estar el muestraproducto, se q es un problema del mod_rewrite y que tengo que hacer una expresion regular para cada 1 de las webs, pero alguien me indicaria como tengo que hacer?

Un abrazo
  #7 (permalink)  
Antiguo 11/04/2010, 08:34
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Permalink!

No, el problema ya me ha tocado personalmente, y he visto a otros usuarios, y la solución(es) la(s) puede(s) ver acá :

http://blog.pumka.net/2009/12/24/seo...elative-links/

La solución que elegí, fue la siguiente :

Agregar la siguiente línea en tu html principal :

Código HTML:
Ver original
  1. <base href="http://ruta/principal/" />

Dónde los .css, .jss e imágenes deben encontrarse dentro de 'principal'. La razón exacta de porqué al trabajar con url's amigables ocurre esto, no la recuerdo, pero esa solución me sirvió.

Voy a buscar otro mensaje en el que ayudé hace un tiempo, a un usuario que tuvo el mismo problema, mientras prueba lo que te pasé.

Nos vemos.

EDIT : Encontré el tema. Acá el usuario @lobo_php da la solución que utilizó : http://www.forosdelweb.com/f18/htacc...wf-etc-773207/
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 11/04/2010, 09:11
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

Muchisimas gracias por la respuesta, lo pruebo y te comento como me fue!

Un abrazo
  #9 (permalink)  
Antiguo 12/04/2010, 07:37
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

Bueno me fue re bien con eso =) ya lo pude arreglar!! Muchisimas grcias

Ahora tengo 1 problema, tengo un menu desplegable de categorias, en la cual selecciono la categoria y paso los ids (id=categoria y id2=sub-categoria), cuando hago click me sale este fatal error:

Código:
Fatal error: Cannot redeclare urls_amigables() (previously declared in C:\AppServ\www\ventafacil\busqueda.php:41) in C:\AppServ\www\ventafacil\functions.php  on line 242
en el function.php puse la funcion urls_amigables desde la linea 231 a la 242... asi:

Código PHP:
function urls_amigables($url) {
$url strtolower($url);
$find = array('á''é''í''ó''ú''ñ');
$repl = array('a''e''i''o''u''n');
$url str_replace ($find$repl$url);
$find = array(' ''&''\r\n''\n''+');
$url str_replace ($find'-'$url);
$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
$repl = array('''-''');
$url preg_replace ($find$repl$url);
return 
$url;

y en el .httacces tengo esta regla:
Código:
RewriteRule ^busqueda/(.*)/(.*)$	busqueda.php?id=$1&id1=$2

y a las categorias las tengo de esta forma:
Código PHP:
a href="busqueda.php?id=1&id1=1"
a las cuales las deberia tratar asi?:
Código PHP:
a href="busqueda"

Espero alguien me oriente
UN abrazo
  #10 (permalink)  
Antiguo 12/04/2010, 13:36
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Permalink!

Con respecto al error Fatal error, es claramente el hecho de que ese código, la función urls_amigables, la tienes en 2 páginas distintas, y una de esta, está conteniendo a la otra página con la misma función, por eso te lanza el error de que no se puede redeclarar la función. Sería mejor que escribas la función en solo una página, y esta la llames desde las otras que usen la función.

Ahora, sobre tu segunda duda, la verdad no la entendí
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #11 (permalink)  
Antiguo 13/04/2010, 05:51
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Permalink!

Hola, ya lo solucione, lo del error fatal yo pense lo mismo, que lo tenia declarado dos veces, el problema fue que me olvide de sacarlo cuando pase todo al archivo functions.php (Ahi tengo las funciones que utilizo).

y lo de las categorias, entendi que debia tratarlo asi <a href="busqueda/12/8" /> donde 12 (El primer parametro) Es el id y 8 (Segundo parametro) Es el id2. Ahora anda de 10.

Te agradezco mucho la preocupacion y las ganas de ayudar!
Espero algun dia poder retribuirte esto de la misma manera!
Un abrazo!
  #12 (permalink)  
Antiguo 13/04/2010, 13:56
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Permalink!

De nada, me alegra que te funcionara .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: permalink
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 17:37.