New question

Question:

Date: 09-07-2021 08:46:36 (In Spanish)

Como convertir mi URL a una URL amigable[Resolved]

Tengo una URL en mi sitio para esta no es amigable y por lo tanto me resta puntos en cuanto a SEO se trata. No tengo ni la mas remota idea de como convertir mi URL a una URL amigable pero hasta donde tengo entendido creo que esto se hace con el archivo .htaccess con algunas lineas de codigo.

Esta es mi URL que tengo ahora mismo: https://bomgos.com/detail?id=3&title=villas-del-parque-ubicadas-en-vista-hermosa

Esta es la URL que quiero para mi proyecto: https://bomgos.com/villas-del-parque-ubicadas-en-vista-hermosa
Tags: URL Friendly Votes: 0 - Answers: 7 - Views: 3 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 12-07-2021 17:02:22 En general para que las URL sean amigables necesitas que tu proyecto utilice el patrón MVC pues la URL sigue este esquema: http://ejemplo.com/controlador/metodo/parametro1/parametro2/... etc.
    En el caso de la URL que muestras como ejemplo, el controlador no esta definido (sería el predeterminado o 'default'), el método sería 'detail' y los argumentos id=3 y titulo="villas...."
      Votes: 0 - Link answer
     
  • Date: 13-07-2021 03:35:36 El patrón MVC no es requisito para usar URLs amigables.

    Lo que comenta Braylin es bastante acertado (respecto del archivo .htaccess).

    Esto, por supuesto, parte del supuesto de que hosteas usando Apache (Si usas algún otro webserver el archivo .htaccess no hará nada).

    Volviendo, asumiendo que estás usando Apache, lo que necesitas es configurar el módulo mod_rewrite, esta configuración puede hacerse en el archivo .htaccess o directamente en la configuración del virtual host.

    En el archivo .htaccess sería colocar:

    [code]
    RewriteCond %{DOCUMENT_ROOT}%/$1 !-f
    RewriteRule ^(*.)$ /detail?title=$1
    [/code]

    Aquí lo que estoy diciendo es que sólo se aplicará la re-escritura cuando lo que esté luego de la / no sea un archivo específico (Esto es para dejar fuera, por ejemplo, index.html). Eso es lo que hace la RewriteCond.

    En la segunda línea está la re-escritura efectiva: se toma una expresión regular que atrapa cualquier cadena (En tu caso villas-del-parque-ubicadas-en-vista-hermosa) y se la transforma a una URI que comienza con detail?title= y ahí el placeholder $1 se reemplaza por el string atrapado por la expresión, es decir, la URL final será: https://bomgos.com/detail?title=villas-del-parque-ubicadas-en-vista-hermosa.

    El problema que tendrás es que el id=3 no hay forma de obtenerlo de la URL original con lo cual vas a necesitar implementar una búsqueda por el campo title y hacerlo unique en tu base de datos.

    Consúltame si te quedan dudas ;)
      Votes: 1 - Link answer
     
  • Date: 13-07-2021 04:30:40 De acuerdo completamente con que no es requisito usar MVC para obtener URLs amigables. Sin embargo, la ventaja sobre el uso exclusivo de htaccess es la versatilidad: si usas solamente un archivo htaccess para lograr las URLs amigables, debes agregar una regla por cada página posible del sitio, lo cual para sitios grandes afecta la mantenibilidad y los hace más difíciles de escalar. También está el aspecto de la portabilidad porque, como menciona Mauro, no puedes usar esa solución en IIS. En mi experiencia, usar MVC permite lograr URLs amigables y combinado con el uso de htaccess, aún más amigables.   Votes: 0 - Link answer
     
  • Date: 13-07-2021 11:14:24 En realidad ya logre solucionar el problema y quiero decirles que ambos tienen razón.
    Por una parte Mauro tiene toda la razón y es que las url amigables no necesariamente necesitan del modelo, vista, controlador (MVC) ya que yo estoy creando un blog y no estoy trabajando con MVC y logre que mi url sea amigable.

    Por otra parte Juan tiene razón y es que para lograr que mis url sean amigables tengo que crear una linea de código por cada pagina.

    Me explico: Para ver el articulo que he escrito en el blog, la url que conduce a ver el post en concreto posee una url amigable, hasta ahí todo bien. Pero por ejemplo para ver el perfil de usuario y para que este tanga una URL amigable hay que escribir otra linea de código cambiando la pagina y el parámetro a recibir los datos.

    Ejemplo:
    # URL Amigable POST
    RewriteRule ^article/([0-9]+) article.php?id=$1&title=$2
    
    # URL Amigable PERFIL USUARIO
    RewriteRule ^profile/([0-9]+) profile?id=$1&nick=$2
    


    Por otra parte no se si sea mantenible o no como afirma Juan pero dudo que un sitio web necesite tantísimas url amigables.

    Por otra parte me salia un error en las direcciones de la pagina, cuando colocaba la url no amigable todo los estilos y los links cargaban perfectamente, pero cuando entraba con la url amigable los link fallaban y no cargaban los estilos correctamente y al pasar el maus por encima de un enlace note que las url estaban mal.

    Para solucionarlo había dos formas, una era colocando la url de todos los links de forma especifica a cada link y la otra mucho mas profesional simplemente era hacer uso de la etiqueta
    <base ="tu_ruta" />
    de HTML con solo eso todo quedo de manera perfecta y funcionando correctamente.

    Quiero darles gracias por su opinion y por tratar de solucionar mi problema. Muchas gracias
      Votes: 0 - Link answer
     
  • Date: 14-07-2021 03:36:51 Ante todo: felicitaciones Braylin! Me alegro que hayas solucionado tu problema :)

    Sobre el tema del MVC, a mi me parece buenísimo (Lo uso siempre que hago una aplicación web), sin embargo hay que distinguir entre el modelo de arquitectura de la aplicación y el problema que señala Juan.

    Es cierto que del modo en que está planteada la solución te vas a encontrar con el problema de tener que agregar el ruteo a nivel del webserver, algo que ciertamente no es una buena idea.

    Sin embargo, esto se soluciona implementando un Single Entry Point hacia tu aplicación, es decir, hacés una regla genérica en el webserver que redirija todo lo que llega a tu dominio hacia un archivo (Generalmente se usa el index.php para esto).

    Una vez dentro de tu php el código puede estar estructurado de la forma que más te guste/convenga. MVC es una posibilidad pero no la única.

    Saludos!
      Votes: 1 - Link answer
     
  • Date: 14-07-2021 12:32:08 Genial Mauro gracias por esa información que acabas de dar, ahora mismo me pongo a investigar mas a acerca del Single Entry Point. Quiero que cada aplicación web que yo construya quede mejor que la anterior.

    Aunque no se trabajar con MVC pero esta dentro de mis planes aprender esa metodología para hacer mis aplicaciones web mas robustas ya que yo solo aprendí a programar con PHP estructurado. No se programar en POO programación orientada a objetos.

    Pero esta dentro de mis planes dominar todo lo mencionado al 100%
    Pero mientras mas información para hacer mis aplicaciones web mejor con PHP estructurado es bien recibida. Gracias
      Votes: 0 - Link answer
     
  • Date: 19-07-2021 08:21:02 Hola Braylin!

    Por si te puede ayudar, he escrito este libro sobre PHP Orientado a Objetos.

    MVC en realidad no es algo que vaya de la mano con POO (Aunque en general se lo vincula).

    Mi recomendación es que enfoques en aprender POO primero, buenas prácticas después y recién ahí te metas a estudiar algún framework MVC (Symfony sería mi elección pero cualquiera puede andar bien :)

    Exitos!
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In