{"id":612,"date":"2025-09-26T12:55:23","date_gmt":"2025-09-26T15:55:23","guid":{"rendered":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=612"},"modified":"2025-09-26T12:55:23","modified_gmt":"2025-09-26T15:55:23","slug":"%f0%9f%8c%90-como-escribir-una-url-amigable","status":"publish","type":"post","link":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=612","title":{"rendered":"\ud83c\udf10 Como Escribir una URL Amigable"},"content":{"rendered":"<h2>\ud83c\udf10 Objeto de Reescritura de URLs (URL Rewrite)<\/h2>\n<p><strong>Aplicable a:<\/strong><\/p>\n<ul>\n<li>\n<p>GeneXus 18<\/p>\n<\/li>\n<li>\n<p>GeneXus 17<\/p>\n<\/li>\n<\/ul>\n<p>El <strong>objeto URL Rewrite<\/strong> permite crear <strong>URLs amigables<\/strong>, mejorando la <strong>usabilidad<\/strong>, la <strong>accesibilidad<\/strong> y la <strong>compatibilidad SEO<\/strong> de un sitio web. A trav\u00e9s de este objeto, se puede definir c\u00f3mo se asignan las URLs a los objetos y sus par\u00e1metros.<\/p>\n<hr \/>\n<h2>\ud83d\udd39 Beneficios de URLs amigables<\/h2>\n<table>\n<thead>\n<tr>\n<th>Beneficio<\/th>\n<th>Descripci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Separaci\u00f3n de interfaz e implementaci\u00f3n<\/td>\n<td>Las URLs no dependen de la estructura interna de los objetos.<\/td>\n<\/tr>\n<tr>\n<td>SEO-friendly<\/td>\n<td>Facilita el posicionamiento en buscadores.<\/td>\n<\/tr>\n<tr>\n<td>Independencia de nombres de objetos<\/td>\n<td>Las URLs funcionan aunque cambien nombres o modularizaci\u00f3n.<\/td>\n<\/tr>\n<tr>\n<td>Compatibilidad con generadores<\/td>\n<td>Funciona tanto en .NET como Java, evitando dependencia de un generador.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>\u2699 Componentes del objeto URL Rewrite<\/h2>\n<ul>\n<li>\n<p><strong>Reglas de reescritura:<\/strong> Definen asignaciones entre URLs y objetos.<\/p>\n<\/li>\n<li>\n<p><strong>Variables:<\/strong> Permiten parametrizar partes de la URL.<\/p>\n<\/li>\n<li>\n<p><strong>Ayuda:<\/strong> Proporciona asistencia desde GeneXus.<\/p>\n<\/li>\n<li>\n<p><strong>Documentaci\u00f3n:<\/strong> Explica el funcionamiento y restricciones.<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\ud83d\udccc Reglas de Reescritura<\/h2>\n<p>Cada regla establece c\u00f3mo una URL se <strong>mapa<\/strong> a un objeto de GeneXus.<\/p>\n<p><strong>Formato general:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>URL amigable<\/th>\n<th>Objeto y par\u00e1metros<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>home<\/code><\/td>\n<td><code>Home<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>core\/clients<\/code><\/td>\n<td><code>Core.WWClient<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>core\/clients\/{&amp;ClientId}\/{&amp;Mode}<\/code><\/td>\n<td><code>Core.Client(&amp;Mode,&amp;ClientId)<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>core\/clients\/{&amp;ClientId}<\/code><\/td>\n<td><code>Core.ViewClient(&amp;ClientId)<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Ejemplos de URLs resultantes:<\/strong><\/p>\n<ul>\n<li>\n<p><code>http:\/\/www.ejemplo.com\/inicio<\/code><\/p>\n<\/li>\n<li>\n<p><code>http:\/\/www.ejemplo.com\/core\/clientes<\/code><\/p>\n<\/li>\n<li>\n<p><code>http:\/\/www.ejemplo.com\/core\/clients\/1\/UPD<\/code><\/p>\n<\/li>\n<li>\n<p><code>http:\/\/www.ejemplo.com\/core\/cliente\/1<\/code><\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\u26a0 Consideraciones importantes<\/h2>\n<ul>\n<li>\n<p>No es necesario mapear todos los par\u00e1metros de un objeto.<\/p>\n<\/li>\n<li>\n<p>La funci\u00f3n <strong>Link<\/strong> devuelve URLs relativas al <strong>servidor<\/strong> si existe un objeto URL Rewrite, no relativas al documento. Esto puede afectar concatenaciones de URLs.<\/p>\n<\/li>\n<li>\n<p>El objeto <strong>API<\/strong> no es compatible con URL Rewrite.<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\ud83d\udeab Restricciones<\/h2>\n<table>\n<thead>\n<tr>\n<th>Restricci\u00f3n<\/th>\n<th>Detalle<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cifrado de par\u00e1metros<\/td>\n<td>Los par\u00e1metros solo se pueden asignar a objetos donde <code>Cifrar par\u00e1metros de URL = No<\/code>.<\/td>\n<\/tr>\n<tr>\n<td>Estilo de par\u00e1metros<\/td>\n<td>Debe ser <code>Nombrado<\/code> para entornos.<\/td>\n<\/tr>\n<tr>\n<td>Experiencia del usuario web<\/td>\n<td>Debe configurarse en <code>Suave<\/code> para los objetos afectados.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>\ud83d\udcdd Ejemplos pr\u00e1cticos<\/h2>\n<h3>1\ufe0f\u20e3 Referencias parciales de par\u00e1metros<\/h3>\n<p>Si un par\u00e1metro no se define en la URL, se a\u00f1ade autom\u00e1ticamente a la <strong>query string<\/strong>.<\/p>\n<table>\n<thead>\n<tr>\n<th>Regla<\/th>\n<th>Llamado al objeto<\/th>\n<th>URL resultante<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>core\/clients\/{&amp;ClientId} =&gt; Core.Client(&amp;Mode,&amp;ClientId)<\/code><\/td>\n<td><code>Core.Client('UPD',1)<\/code><\/td>\n<td><code>http:\/\/www.ejemplo.com\/core\/clients\/1?Mode=UPD<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>2\ufe0f\u20e3 Mapeo sin par\u00e1metros<\/h3>\n<p>Incluso si el objeto tiene par\u00e1metros definidos, se puede crear una URL sin mapearlos.<\/p>\n<table>\n<thead>\n<tr>\n<th>Regla<\/th>\n<th>Llamado al objeto<\/th>\n<th>URL resultante<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>core\/client =&gt; Core.Client<\/code><\/td>\n<td><code>Core.Client('UPD',1)<\/code><\/td>\n<td><code>http:\/\/www.ejemplo.com\/core\/client?UPD,1<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>\ud83d\ude80 Despliegue<\/h2>\n<ul>\n<li>\n<p>GeneXus aplica <strong>autom\u00e1ticamente<\/strong> todas las reglas definidas en los objetos URL Rewrite al implementar una <strong>Deployment Unit<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Es fundamental evitar conflictos entre reglas de distintos objetos.<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf10 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\u00e9s de este objeto, se puede definir c\u00f3mo se asignan las URLs a los objetos y sus par\u00e1metros. \ud83d\udd39 [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-612","post","type-post","status-publish","format-standard","hentry","category-docs"],"_links":{"self":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=612"}],"version-history":[{"count":0,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/612\/revisions"}],"wp:attachment":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}