Problema con url amigables

Iniciado por carwar, 15 Septiembre 2017, 20:51 PM

0 Miembros y 1 Visitante están viendo este tema.

carwar

Hola que tal todos tengo un problema con las url amigables de mi sitio quiero cambiar esto:

equipo.php?recordId=1

por

/serie/modelo/nombre

es mis href uso este codigo
"equipo.php?recordId=<?php echo $row_Equipos['id']; ?>"

luego en equipo.php obtengo la variable mediante un get y cargo la base de datos.

en el htacces entre y coloco esto

Options +FollowSymLinks
RewriteEngine on
#RewriteRule ^(.*)$ equipo.php?recordId=$1


estoy tratando de probar si funciona pero a pesar de poner el nombre de la web/1 por ejemplo no me cargan los datos del equipo. Siu me pueden guiar muy agradecido no tengo mucha idea de como hacer esto.


AlbertoBSD

#1
Hola, pues lo que necesitas es que un archivo te controle todo lo que recibes por la URL.

Yo en mi archivo HTACCESS tengo:

RewriteRule ^.*$ ./index.php

Con lo cual todo lo procesa el index.php.

El cual tiene algo similar a:

Código (php) [Seleccionar]

$params = explode("/",$_SERVER['REQUEST_URI']);
switch($params[1]) {
case "serie":
$modelo= $params[2];
$nombre= $params[3];
break;
....


Posteriormente cargo los datos relacionados que me estan solicitando en el URL

Obviamente tiene que validar que los parámetros existan y sean validos, ademas si los vas a usar para realizar consultas SQL, hay que sanizitarlos para evitar que te inyecten consultas
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

carwar

gracias bro por tu respuesta. ya he logrado cambiar los links ahora me quedan asi

serie/serie-producto/modelo/6

quisiera que no apareciera el id despues del / osea quitar el 6 alguna idea?

este es mi href

<a href="serie/<?php echo amigables($row_Modelos['nombre']);?>/<?php echo amigables($row_Equipos['modelo']);?>/<?php echo $row_Equipos['id']; ?>"><img src="images/equipos/<?php echo $row_Equipos['img']; ?>" alt=""></a>

y aqui el codigo del htacces

RewriteEngine on
RewriteRule ^serie/(.*)/(.*)/(\w+)/?$ equipo.php?nmodelo=$1&modelo=$2&recordId=$3


y aqui les dejo la funcion que uso
function amigables($url) {

// Tranformamos todo a minusculas

$url = strtolower($url);

//Rememplazamos caracteres especiales latinos

$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');

$repl = array('a', 'e', 'i', 'o', 'u', 'n');

$url = str_replace ($find, $repl, $url);

// Añaadimos los guiones

$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);

// Eliminamos y Reemplazamos demás caracteres especiales

$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');

$repl = array('', '-', '');

$url = preg_replace ($find, $repl, $url);

return $url;