PHP - urls amigables

 
Vista:
Imágen de perfil de Juan Carlos
Val: 25
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

urls amigables

Publicado por Juan Carlos (18 intervenciones) el 16/12/2023 18:46:41
Tengo esta url

1
http://www.dominio.com/account.php?o=46&r=15948

donde
1
o
es la opcion en el menu llamada productos y
1
r
es el id del producto

como configuro el .htaccess o que debo hacer para que muestre la url amigable asi:

http://www.dominio.com/account.php/productos/15948/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan

urls amigables

Publicado por Ivan (118 intervenciones) el 18/12/2023 17:30:25
Hola,

las Url amigables son un tema apasionante y un poco más complicado que el problema que planteas.

Para empezar, yo te aconsejaría que pienses en la estructura que le quieres dar a toda tu web (menús, productos, categorías, secciones, etc) pensando también en términos SEO.

Una vez tengas clara la estructura de tu web debes crear los enlaces html directamente amigables con parámetros que apunten a cada una de las secciones, menús, etc, como tu ejemplo:

1
http://www.dominio.com/productos/15948/

En este caso, creo que sobran account.php y o=46, porque account.php no aporta nada y o=46 dices que es el menú "productos".

Y ahora es donde interviene .htaccess y traduce la Url amigable en la Url con parámetros que espera tu web:

En este caso:

RewriteEngine On
RewriteRule ^productos/([0-9]+)/$ account.php?o=46&r=$1 [NC,L]

Lo que está haciendo .htaccess es capturar las Url que empiezan por "productos", seguido de una barra "/", un número "([0-9]+)" y terminan en una barra "/$". Estas Url sabemos que tienen que ir a account.php?o=46 y htaccess guarda el valor numérico capturado en "([0-9]+)" en la variable $1 que se pasa como r=$1, quedando la redirección así:

1
http://www.dominio.com/account.php?o=46&r=$1

Esta es la "mágia" de .htaccess, con el que se pueden hacer muchas cosas. Tengo varios artículos publicado en mi blog sobre Url amigables con PHP y .htaccess, El archivo .htaccess y un libro publicado Guía básica .htaccess.

Espero que te sirva.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan Carlos
Val: 25
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

urls amigables

Publicado por Juan Carlos (18 intervenciones) el 18/12/2023 18:44:47
Gracias Ivan,

Creeme, este tema lo he enfrentado desde hace 3 años y cada vez que me queda un tiempo lo retomo siempre reiniciando. Tengo varias paginas donde se presenta algo como esto..

1
https://www.alladinerp.com/site/alladin-pos.php?t=Software%20Para%20Punto%20de%20Venta&i=seo-alladin-pos

Bueno, en

1
2
RewriteEngine On
RewriteRule ^productos/([0-9]+)/$ account.php?o=46&r=$1 [NC,L]

De donde sale "productos"?, si bien en la url va el id de un producto, la palabra producto no, claro que esta en en ta tabla. Como paso la variable a .htaccess?

ahora esto
1
?o=46
en el .htacess quiere decir que tengo que escribir una linea en en el archivo por cada opcion del menu?

puedo armar .htaccess directamente desde la tabla menu?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

urls amigables

Publicado por Ivan (118 intervenciones) el 18/12/2023 19:53:06
Hola,

como dije, las Url amigables son algo más complicado que un simple paso de parámetros a "amigable".

Te respondo a cada punto:

- De donde sale "productos"? Productos sale de o=46. Si quieres que productos (y cualquier otra opción del menú) sea "amigable" debes crear esa palabra amigable para cada opción del menú.

- Como paso la variable a .htaccess? En tu página HTML creas el enlace con la palabra "productos" (o cualquier otra amigable) y cuando se hace clic en el enlace se recibe la Url en el servidor y es entonces cuando .htaccess la recibe y la reescribe en forma de parámetros.

- tengo que escribir una linea en en el archivo por cada opcion del menu? Depende de cómo quieras estructurar tu web, como dije al principio y como tengo escrito en mi blog Url amigables con PHP y .htaccess puedes crear un archivo PHP donde se reciban todas las Url y derivar a partir de allí.

- puedo armar .htaccess directamente desde la tabla menu? No, no puedes y con esa pregunta veo que no has leído el artículo sobe El .htaccess

Si quieres meterte en este tema, necesitas más formación, es un tema complejo técnicamente que require nociones de programación PHP, de servidores Apache y de Expresiones regulares, así que no es cosa de un día me pongo y ya ...

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar