url amigables
5 seguidores
Buenas me gustaría saber como puedo cambiar mi sitio programado con php y pasar las url amigable.
He visto que se puede hacer mediante htacces y expresiones regulares , pero no me queda claro.
Que tengo que hacer una expresión regula por dirección? no puede ser verdad?
joanboluda Profesor Plus
Hola Sergio, my buenas!
No hace falta que sea URL por URL, eso sería de locos, hehe! Sólo debes usar una expresión regular como esta:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Con eso eliminarías los ".php", por ejemplo. La idea sería encontrar una regla o lógica para aplicar a todas las URLs :)
Seguimos,
sergiocastilla
Gracias Joan por tu aclaración pero no estoy muy puesto en expresiones regulares y no entiendo por ejemplo como puedo modificar url como estas en la misma web como
http://www.sitio.com/productos.php?categoria=7
http://www.sitio.com/productos/singleProduct.php?searchProduct=405
para que se convierta en
http://www.sitio.com/camiseta
http://www.sitio.com/productos/camisetadescripcion
por ejemplo. tengo que hacer dos tipos de expresiones?
zeybix
Estás utilizando algún framework? o php puro y duro?
joanboluda Profesor Plus
Entonces ya debes hacerlo a medida, aquí tienes indicaciones de cómo usar las RexEx: http://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049
De todas formas, como apunta Zeybix, que uses algún framework, que te lo hace todo. Vale la pena, especialmente si no eres programador :)
Seguimos,
sergiocastilla
Bueno tengo conocimientos básicos de programación y sigo aprendiendo.
Se que un framework es más productivo pero creo que es mejor aprender el lenguaje y despues el framework..
siempre surgen problemas o modificaciones en lo cuales si no sabes programar ensu código puro no sabras solucionarlo no?
feliper
De acuerdo en que es mejor aprender a pelo el lenguaje, pero llegaras a un punto en el que necesitas simplificarte la vida con un Cms o un framework, y este tema de las URLs seria un buen motivo ...
En tu caso, si cambiaras los números de categoría por el nombre que quieres que aparezca, en htacces podrías decir que solo se muestre lo que está detrás del igual, de todas formas esto es algo que se piensa al principio, te puede costar mucho implementarlo si el sitio ya está hecho ...
creo tendría más logica que en vez de
camiseta
productos/camisetadescricpcion
hicieras
camiseta/descripcion
si camiseta no está bajo productos, su descripción tampoco debiera
saludos y suerte !!
sergiocastilla
Teniendo en cuanta que tengo esta tipo de url
http://www.sitio.com/productos.php?categoria=7
http://www.sitio.com/productos.php?categoria=8
http://www.sitio.com/productos.php?categoria=9
...
y cada numero es una categoria (tengo 300)
tendria que hacer 300 lineas con expresiones para que ponga
http://www.sitio.com/mobiliario
http://www.sitio.com/iluminacion
...
?????????????????????????????????????????
ponchi
Lo suyo sería que en lugar de numero tuviera las categorías escritas de forma que te quedaría http://www.sitio.com/productos.php?categoria=mobiliario para la página http://www.sitio.com/mobiliario pero a estas alturas igual es un follón.
También podrías tener la url http://www.sitio.com/mobiliario /7/ para la url http://www.sitio.com/productos.php?categoria=7
sergiocastilla
Lo que comentas sería pasar por la url dos variables una la id y la otra el nombre de la categoria aunque no me sirva nada más para la url y despues enmascarar en .htacces la id. verdad?
Y no existe otra forma más eficaz y rápida?
Gracias de antemano por tu respuesta
ponchi
Si es eso que comentas de las dos variables, pero sin saber en que punto está el proyecto no te se decir si existe una solución mejor y más rápida
sergiocastilla
Bueno el proyecto esta ya maquetado y programado por completo a falta de las url amigables
andrewman
sergio, yo creo que la forma más fácil y rápida sería que usaras urls del tipo 'sitio.com/categoria/mobiliario' o 'sitio.com/categoria/7' y luego en tu htaccess pones:
RewriteRule ^categoria/([a-zA-Z0-9]+)/?$ /productos.php?categoria=$1 [QSA,L]
sergiocastilla
Gracias por la información... pero no estoy muy puesto en expresiones en .htaccess..
Es lo que necesito pero esta expresion regular me identificaría las id de cada categoria y sustituiria el numero por el nombre?
categoria=1 -> mobiliario
categoria=2 -> iluminacion
...etc
andrewman
No, usas el htaccess para mapear las 'urls amigables' hacia el script php. Es una instrucción que le das al servidor diciendo que todas las peticiones que empiecen por 'categoria' y seguidas por un 'nombre-o-id' sean dirigidas al script 'productos.php' pasándole ese 'nombre-o-id' como argumento.
Si usas la id o el slug de la categoría, ya es decisión tuya. Eso lo controlas tú al generar los enlaces en el archivo correspondiente, luego para procesarla, adaptas la consulta sql en 'productos.php'.
sergiocastilla
Joer que torpe no llego a compreder y me hace bastante falta...
Yo creia que la url que crea php al mandar por GET las variables , las transformaba el .htacces
ponchi
@sergiocastilla el proceso sería así la URL amigable llega al servidor http://www.sitio.com/mobiliario /7/ y el servidor lee el htacces y traduce la url a http://www.sitio.com/productos.php?categoria=7 que es lo que procesa, por so te decía que si en tu sitio ya tienes programado que use el id para las peticiones al servidor yo añadiría el id a la url amigable.
Te dejo un par de páginas que me sirvieron cuando me enfrente a ellos
https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
http://www.desarrolloweb.com/articulos/introduccion-htaccess.html
http://www.askapache.com/htaccess/htaccess.html
Espero que te sirvan