🌐 Como Escribir una URL Amigable
🌐 Objeto de Reescritura de URLs (URL Rewrite)
Aplicable a:
-
GeneXus 18
-
GeneXus 17
El objeto URL Rewrite permite crear URLs amigables, mejorando la usabilidad, la accesibilidad y la compatibilidad SEO de un sitio web. A través de este objeto, se puede definir cómo se asignan las URLs a los objetos y sus parámetros.
🔹 Beneficios de URLs amigables
| Beneficio | Descripción |
|---|---|
| Separación de interfaz e implementación | Las URLs no dependen de la estructura interna de los objetos. |
| SEO-friendly | Facilita el posicionamiento en buscadores. |
| Independencia de nombres de objetos | Las URLs funcionan aunque cambien nombres o modularización. |
| Compatibilidad con generadores | Funciona tanto en .NET como Java, evitando dependencia de un generador. |
⚙ Componentes del objeto URL Rewrite
-
Reglas de reescritura: Definen asignaciones entre URLs y objetos.
-
Variables: Permiten parametrizar partes de la URL.
-
Ayuda: Proporciona asistencia desde GeneXus.
-
Documentación: Explica el funcionamiento y restricciones.
📌 Reglas de Reescritura
Cada regla establece cómo una URL se mapa a un objeto de GeneXus.
Formato general:
| URL amigable | Objeto y parámetros |
|---|---|
home |
Home |
core/clients |
Core.WWClient |
core/clients/{&ClientId}/{&Mode} |
Core.Client(&Mode,&ClientId) |
core/clients/{&ClientId} |
Core.ViewClient(&ClientId) |
Ejemplos de URLs resultantes:
-
http://www.ejemplo.com/inicio -
http://www.ejemplo.com/core/clientes -
http://www.ejemplo.com/core/clients/1/UPD -
http://www.ejemplo.com/core/cliente/1
⚠ Consideraciones importantes
-
No es necesario mapear todos los parámetros de un objeto.
-
La función Link devuelve URLs relativas al servidor si existe un objeto URL Rewrite, no relativas al documento. Esto puede afectar concatenaciones de URLs.
-
El objeto API no es compatible con URL Rewrite.
🚫 Restricciones
| Restricción | Detalle |
|---|---|
| Cifrado de parámetros | Los parámetros solo se pueden asignar a objetos donde Cifrar parámetros de URL = No. |
| Estilo de parámetros | Debe ser Nombrado para entornos. |
| Experiencia del usuario web | Debe configurarse en Suave para los objetos afectados. |
📝 Ejemplos prácticos
1️⃣ Referencias parciales de parámetros
Si un parámetro no se define en la URL, se añade automáticamente a la query string.
| Regla | Llamado al objeto | URL resultante |
|---|---|---|
core/clients/{&ClientId} => Core.Client(&Mode,&ClientId) |
Core.Client('UPD',1) |
http://www.ejemplo.com/core/clients/1?Mode=UPD |
2️⃣ Mapeo sin parámetros
Incluso si el objeto tiene parámetros definidos, se puede crear una URL sin mapearlos.
| Regla | Llamado al objeto | URL resultante |
|---|---|---|
core/client => Core.Client |
Core.Client('UPD',1) |
http://www.ejemplo.com/core/client?UPD,1 |
🚀 Despliegue
-
GeneXus aplica automáticamente todas las reglas definidas en los objetos URL Rewrite al implementar una Deployment Unit.
-
Es fundamental evitar conflictos entre reglas de distintos objetos.