Foros del Web » Programando para Internet » PHP »

url canónicas con php

Estas en el tema de url canónicas con php en el foro de PHP en Foros del Web. Hola amigos, mi problema es el siguiente. Tengo una tienda en linea que montar y queria que cada vez que se pulsara en algunos de ...
  #1 (permalink)  
Antiguo 12/12/2011, 17:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
url canónicas con php

Hola amigos, mi problema es el siguiente. Tengo una tienda en linea que montar y queria que cada vez que se pulsara en algunos de mis productos la url creada fuese escrita según un nombre metido en el formulario de añadir producto. Es decir el administrador ademas de meter el precio del producto, nombre ectr.. indicara como quiere que se llame la url, luego cuando esto se haga y el usuario vaya a ver los detalles del prodducto, es decir clicke encima, la url se forme según el nombre de url metida en el formulario. Por ejemplo yo ahora cuando veo el detalle de mis productos tengo esto:http://www.enders-colsman.es/verdetallis.php?ud=1p8 y quisiera esto: http://www.enders-colsman.es/esufa-acero inoxidable.

Alguién me guía un poco o me dice donde investigar, gracias.

Última edición por trevol; 12/12/2011 a las 17:21
  #2 (permalink)  
Antiguo 12/12/2011, 17:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: url canónicas con php

Esas no son URLs canónicas, si no me equivoco se le dicen clean urls.

Investiga dicho término.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/12/2011, 20:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

pateketrueke gracias veré haber.
  #4 (permalink)  
Antiguo 13/12/2011, 00:04
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: url canónicas con php

tendrias que guardar en la bd el nombre que se escribe en el form es como poner un title, y de ahi haces la consulta por nombre titulo en vez de por id, ten cuidado con las urls duplicadas, seria bueno que añadieras un id al principio como:

http://www.enders-colsman.es/18900_estufa-acero

asi evitas eso, lo demas es puro htaccess.
  #5 (permalink)  
Antiguo 13/12/2011, 08:13
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: url canónicas con php

Crea una tabla y nombrala url_amigables (por ejemplo) con 2 campos prd_id y url_amigable

Código SQL:
Ver original
  1. prd_id  |   url_amigable
  2. ________________________
  3. 1p8     |   estufa-acero

No sé como has configurado tu .htacces, en lo personal me gusta obtener la variable $_GET['url'] contendiendo la url amigable, puede que tu lo tengas diferente pero lo importante es que tengas accesos a la url amigable desde php.
Suponiendo ...

url: http://www.tudominio.com/estufa-acero
GET: array('url' => 'estufa-acero')


Código PHP:
Ver original
  1. <?
  2.     $sql_producto = 'select * from productos p left join url_amigables u on (p.id = u.prd_id) where prd.url_amigable = ' . $_GET['url'] ;
  3. ?>

Espero me explique bien.

Saludos.
__________________
Páginas web de alta calidad y hechas a la medida.
  #6 (permalink)  
Antiguo 13/12/2011, 10:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

Gracias amigos pero me podríais concretar un poco mas como hago el cambio desde php con htaccess se le pueden pasar variables al archivo htacces por get. para hacer los cambios de forma dinámica?
  #7 (permalink)  
Antiguo 13/12/2011, 11:28
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: url canónicas con php

No he entendido el último post, pero si te refieres a como trabajar con "url amigables", puesde por ejemplo usar htaccess (encontrarás por la red un montón de tutoriales sencillos para cosas más o menos sencillas):

RewriteEngine On
RewriteBase /
RewriteRule ^(+)$ verdetallis.php?idurl=$1 [L]

con esto todas las url (midominio.com/loqueseescriba) se transofrmarán en verdetallis.php?idurl=loqueseescriba
Luego en el archivo verdetallis.php cojes esa url, la comparas con la bd y sacas lo que te interese, igual que lo deves hacer con la ud.

Evidentemente con esa regla tendrás un problema para acceder a otros documentos como index o lo que tengas.
Una solución es por ejemplo tener:

RewriteRule ^/articulo/(+)$ verdetallis.php?idurl=$1 [L]

Así tus url amigables serán del estilo miweb.com/articulo/elarticuloquesea

Hay más opciones como aplicar la regla sólo cuando se llama a un archivo o directorio que no existe, etc etc.

Lo que no puedes hacer es url amigables de forma dinámica y automatizada si quieres mantener como tienes en el archivo verdetallis.php la variable ud (en tu ejemplo con valor 1p8), porque no hay manera de crear una regla general que te relacione 1p8 con un nombre "amigable"...!

Saludos
  #8 (permalink)  
Antiguo 13/12/2011, 12:09
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: url canónicas con php

Hola, mira esta linea del ajemplo que charlyalegret ha puesto...

Cita:
Iniciado por charlyalegret Ver Mensaje
RewriteRule ^(+)$ verdetallis.php?idurl=$1 [L]
en este caso tendrás una variable $_GET['idurl'] disponible y contendrá tu url amigable, es lo mismo que puse en mi anterior respuesta solo que yo le puse $_GET['url']

usa print_r para explorar los array, y <pre> para que se vea más bonito

Código PHP:
<?php
    
echo '<pre>' print_r($_GET) ; echo '</pre>' ;
?>
Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.
  #9 (permalink)  
Antiguo 13/12/2011, 12:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

Hola gracias a los dos entiendo mas o menos lo que decís pero lo que no se es como pasar la url amigable introducida por formulario, es decir creandola dinamicamente y cambiarla por la que no es amigable. Se como tengo que hacerlo en base de datos y todo pero no se como hacer el cambio.
  #10 (permalink)  
Antiguo 13/12/2011, 12:46
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: url canónicas con php

Y si creas una entrada en el formulario para añadir ahí la url amigable? Esque no acabo de entender lo que pides :S
sino muestranos el formulario a ver si lo vemos más claro!! :P
Saludos!
  #11 (permalink)  
Antiguo 13/12/2011, 12:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

Charlyalegret, lo del formulario base datos y meter en una variable la composición de la url no es problema. El problema es como cambiarla por la que se genera automaticamente. para que en vez de ser una url no amigable lo sea amigable. Gracias.
  #12 (permalink)  
Antiguo 13/12/2011, 13:22
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: url canónicas con php

A ver.... la que se genera automáticamente... ¿cómo se genera?
Es decir, si tienes un script que "genera" la url de esta manera:
web.es/verdetallis.php?ud=1p8

digo "genera" por que en realidad lo que haría es asignar un nuevo posible valor a "ud"

no puedes modificarlo para que se genere por ejemplo...

web.es/verdetallis.php?idurl=urlamigable (es decir que esto sea válido e interpretado por verdetallis.php igual que con ud=1p8) ?

y mejor todavía, que en los enlaces que pongas se generen por seguir con el ejemplo de antes:

web.es/articulos/urlamigable (= web.es/articulos/$idurl)

La cual transformarás fácilmente a la anterior url mediante el htaccess?

Saludos!
  #13 (permalink)  
Antiguo 13/12/2011, 13:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

Cita:
y mejor todavía, que en los enlaces que pongas se generen por seguir con el ejemplo de antes:

web.es/articulos/urlamigable (= web.es/articulos/$idurl)
Y esto solo lo tengo que hacer con la regla segunda que me diste en el .htacces? como paso la variable por get al archivo htacces o no es necesario solo con añadirlo a la regla de rewrite es suficiente?
  #14 (permalink)  
Antiguo 13/12/2011, 14:00
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: url canónicas con php

En el htaccess con el mod_rewrite lo que haces es:

url1= la que la gente escribe en el navegador, o la que aparece en los links

url2= la que tu servidor interpreta, sin que nadie más se de cuenta

así que con una regla como la que te puse, por poner un ejemplo (y de paso corrijo el error):

RewriteRule ^/articulo/(.+)$ verdetallis.php?idurl=$1 [L]

^ --> inicio de la regla
/articulo/ -->toda "url1" debe comenzar así para que cumple la regla
(.+) ---> cualquier cosa (el .), y que tenga 1 o más de esas cosas (+)
$ ---> final de la primera parte. Aquí, la verdad, no tiene sentido ponerlo, es más para cuando acabas por ejemplo en / y no quieres que la regla la cumpla nada terminado en por ejemplo .html...

En la segunda parte de la regla escribes "url2", teniendo en cuenta que cualquier cosa variable que hayas puesto en la primera parte (en este caso, el (.+)) se refleje en la segunda con $1

Es decir. Quien escriba web.es/articulos/estufa-acero

en realidad tu servidor lo interpretaría como

web.es/verdetallis.php?idurl=estufa-acero

y ahí es donde está la variable que tu archivo verdetallis.php interpretará, aunque no se vea ni en el link original ni la url que aparezca en el navegador...

Bueno, a partir de esto, te aconsejos que mires alguna cosa más por la web sobre url amigables y htaccess, y a partir de ahí crees tus propias reglas...

Suerte!
  #15 (permalink)  
Antiguo 13/12/2011, 14:13
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 8 meses
Puntos: 11
Respuesta: url canónicas con php

En realidad empiezo a entenderlo no te doy mas karma que no me deja. Pero me podrías explicar un poco mejor la regla:


Cita:
RewriteRule ^/articulo/(.+)$ verdetallis.php?idurl=$1 [L]
y si es necesario una redireccion 301 para url ya creadas e indexadas como tengo que añadirlo? muy agradecido, me has sido de gran ayuda.
  #16 (permalink)  
Antiguo 13/12/2011, 14:40
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: url canónicas con php

Bueno, un manual muy sencillo y bien explicado donde puedes indagar un poco más en el tema, y que seguramente te servirá para lo que quieres:

http://www.desarrolloweb.com/manuale...amigables.html

También te explican ahí como hacer redirecciones 301 mediante Redirect o Redirectmach en el htaccess.

otra página sencilla pero que te explican bien lo poco que te explican:

http://www.emenia.es/como-crear-urls...-con-htaccess/

Lo mejor es leer un poco (de hecho es todo bastante corto y lo puedes leer en un momento), y luego ponerse a probar y no asustarse al principio cuando te aparezca internal server error 500, a todos nos ha pasado al principio... y en caso de duda, consultar por el foro ;)

Saludos

Etiquetas: formulario, url, usuarios
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 08:05.