Problemas con url amigable duplicadas

Estoy diseñando mi web con php (nada de wordpress ni jomla) y estoy intentando crear url amigables mediante htaccess, pues bien, he conseguido crear la url amigable correctamente, pero mi problema y consulta es el siguiente:
Si en mi web hoy alguien publica un post con url amigable por ejemplo midominio.com/me-llamo-pepe/ y mañana otro usuario también llamado pepe publica un post llamado midominio.com/me-llamo-pepe/
¿Cómo soluciono este problema de url duplicadas? ¿Cómo podría diferenciar estas 2 urls y evitar que se dupliquen?

2 respuestas

Respuesta

A la hora de insertarla en la BD deberás controlar que se aúna URL única, si no, le puedes agregar un número al final, que sea secuencial, por ejemplo... Echa un vistazo a http://www.dreamweaver-tutoriales.com

Respuesta

El problema que comentas, se solucionaría mandando el id del post también en la url, al igual que el título.

Precisamente para eliminar estos id de la url se crean las url amigables que solo contienen el titulo del post, y se obtienen por ese dato. Pero el único "pero" es precisamante este, que no puede haber dos url iguales, de lo contrario el obtener siempre te retornará el primer registro.

Así que lo mas fácil para ti será añadir el id en la url y tomarlo como base para obtener, en lugar del título. Podría ser

midominio.com/3/me-llamo-pepe/

En este caso, envías el titulo por posicionamiento y por ser mas agradable visualmente y fácil de recordar, pero el parámetro que te interesa es el 3.

Si no, tendrás que controlar que el título no exista (mas bien la url) y si existe modificar o no permitir ese título, ya depende de como lo plantees y del contexto de tu aplicación... si estas grabando la url como campo, puedes modificar solamente la url... si la generas dinámicamente a partir del título, tendrás que no permitir la entrada de ese título repetido.

PD: sea por lo que sea que obtengas, filtra correctamente el valor del get para evitar ataques con filter_input, y usa para la gestión de SQL mysqli o PDO en lugar de las funciones tradicionales de mysql_query() por ejemplo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas