Especificación de reglas de redireccionamiento en un archivo JSON

Puede especificar reglas de redireccionamiento para las URL en un archivo JSON.

Utilice el formato siguiente en un archivo JSON para especificar las reglas de redireccionamiento para las URL.

{
         "redirectRules":
         [
                {
                        "type": "string",
                        "comment": "this rule is applied first",
                        "expression": "/index.htm",
                        "location": "/home.html"
                },
                {
                        "type": "wildcard",
                        "expression": "/items/*?page=*",
                        "location": "/<$page$>?item=<$wildcard(1)$>",
                        "code": 302
                }
        ]
} 

La estructura contenedora exterior del archivo JSON es una matriz. La matriz contiene instancias de regla.

Las reglas "string" se evaluarán primero, seguidas de las reglas "wildcard", en orden. Cuando coincide una de las reglas, se abandona la evaluación de las reglas siguientes y se genera el redireccionamiento correspondiente.

Cada una de las reglas tiene las siguientes propiedades:

  • La propiedad "comment" es una cadena opcional que no afecta a la evaluación de las reglas. Incluye notas o un comentario.

  • La propiedad "expression" es una cadena necesaria que se hace coincidir con la URL relativa al sitio entrante. En una regla de comodín, el token de asterisco (*) coincide con cero o más caracteres.

  • La propiedad "location" es una cadena necesaria que indica la ubicación o el destino del redireccionamiento. El redireccionamiento puede ser una URL completa o relativa.

  • La propiedad "code" es un entero opcional que proporciona el código de respuesta HTTP que se utilizará al emitir el redireccionamiento. El valor debe ser uno de los siguientes enteros:

    • 301: indica que el recurso se ha movido permanentemente. Este es el valor por defecto si se omite la propiedad "code".

    • 302: indica que el recurso se ha movido temporalmente.

  • La propiedad "type” es una cadena opcional que indica el tipo de regla de redireccionamiento. El valor debe ser una de las siguientes cadenas:

    • "string" especifica una regla más rápida cuya expresión coincide exactamente con la URL de entrada completa.

    • "wildcard" especifica una regla de comodín que puede coincidir con una serie de URL. Este es el valor por defecto si se omite la propiedad.

Tokens de ubicación

Puede utilizar tokens de ubicación para ayudar a crear o redireccionar la ubicación. Cada uno de los siguientes tokens de ubicación pueden ayudar a especificar un redireccionamiento:

  • <$urlPath$>: parte de la ruta de acceso de la URL coincidente.

  • <$urlQueryString$>: cadena de consulta de URL completa de la URL coincidente.

  • <$urlQueryStringExcept(name1,name2)$>: cadena de consulta de URL completa de la URL coincidente menos los parámetros especificados.

  • <$wildcard(N)$>: índice basado en uno del comodín coincidente en la URL coincidente. (Es análogo a \1..\9 en las expresiones regulares).

  • <$name$>: valor del parámetro de cadena de consulta especificado. Por ejemplo, si tiene la cadena de consulta msmith: ?page=42 en la entrada, puede utilizar <$page$> en la ubicación para colocar '42' en la ubicación.

Restricciones

Las siguientes restricciones se aplican al archivo redirects.json en conjunto y a las reglas que contiene:

  • El tamaño máximo general de archivo aceptado por Oracle Content Management es 250 KB.

  • El número máximo de reglas en el archivo redirects.json es 1.000.

  • La longitud máxima de "expression" de una regla es de 1.000 caracteres.

  • La longitud máxima de "location" de una regla es de 2.000 caracteres.

  • El número máximo de tokens de '*' en una expresión de regla con comodín es 10.

Ejemplo de coincidencia de cadena

Regla:

        {
              "type": "string",
              "expression": "/old/page.jsp?id=material&type=glass",
              "location": "/new/<$id$>.htm"
        }            

La siguiente URL coincidiría con la regla:

/old/page.jsp?id=material&type=glass
  • La ubicación resultante sería: /new/material.htm

  • Coincide la URL completa, incluida la cadena de consulta.

  • Aunque se utiliza <$id$> en la ubicación, no es necesario para este ejemplo porque solo podría coincidir una cadena de consulta posible. La ubicación se podría haber escrito como /new/material.htm.

Las siguientes URL no coincidirían con la regla:

  • /old/page.jsp

    (La expresión de la regla proporciona una cadena de consulta que debe coincidir).

  • /old/page.jsp?id=material&type=glass&index=2

    (La parte adicional &index=2 en la URL candidata no coincide exactamente con la expresión de la regla).

  • /old/page.jsp?type=glass&id=material

    (El orden de los parámetros de la cadena de consulta debe coincidir en una regla “string”).

Ejemplo de coincidencia con comodines

Regla:

        {
              "type": "wildcard",
              "expression": "/old/*/pages/*?id=*&item=sheet-*",
              "location": "/new/<$id$>/<$wildcard(4)$>.html"
        }            

Las siguientes URL coincidirían con la regla:

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs

    • La ubicación resultante sería: /new/XT1045/specs.html

    • La parte de la ruta de acceso de la URL coincide, por lo que también se examinan las condiciones de coincidencia en la cadena de consulta.

    • Los parámetros de este ejemplo coinciden con el orden de los parámetros en la expresión de regla, pero esto no es necesario.

  • /old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045

    • La ubicación resultante sería: /new/XT1045/specs.html

    • La parte de la ruta de acceso de la URL coincide con la expresión de regla antes del signo de interrogación (?), por lo que también se comprueba si hay una coincidencia en los parámetros.

    • Aunque los parámetros se muestran en un orden diferente en la expresión de regla, la coincidencia de los parámetros se realiza individualmente.

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing

    • La ubicación resultante sería: /new/XT1045/specs.html

    • La parte de la ruta de acceso de la URL coincide, por lo que también se examinan las condiciones de coincidencia en la cadena de consulta.

    • La URL candidata tiene un parámetro &unrelated=thing adicional, pero dado que los parámetros de consulta especificados en la expresión de regla coinciden, se considera que la regla coincide.

    • El parámetro unrelated estaría disponible en la ubicación como un token, como <$unrelated$>, y tendría el valor thing, aunque no haya contribuido en la coincidencia de la regla.

Las siguientes URL no coincidirían:

  • /old/pages/info.jsp

    (La parte de la ruta de acceso de la URL no coincide con la parte de la ruta de acceso de la expresión de regla).

  • /old/phones/android/pages/info.asp

    (La parte de la ruta de acceso de la URL coincide con la parte de la ruta de acceso de la expresión de regla, pero los parámetros de consulta de la expresión de regla no coinciden).

  • /old/phones/android/pages/info.asp?id=cellular

    (La parte de la ruta de acceso de la URL coincide con la parte de la ruta de acceso de la expresión de regla, pero no todos los parámetros de consulta de la expresión de regla coinciden).

Definición de una matriz de token

También puede crear una matriz de definiciones de tokens en el archivo redirects.json que le facilite la configuración de redireccionamientos que soporten varias URL personalizadas. De esta forma podrá redireccionar de la forma correcta según las características de la URL entrante.

Utilice el siguiente formato en el archivo redirects.json para definir los tokens que usar en las URL de reglas de redireccionamientos.

{
         "tokenDefinitions":
         [
                {
                        "token": "sitePrefix",
                        "type": "hostmatch",
                        "expresion": "example.com"
                        "value": ""
                },
                {
                        "token": "sitePrefix",
                        "type": "hostmatch",
                        "expresion": "*.com"
                        "value": "/site/Starter-Site"
                },
                {
                        "token": "gotoRedirect",
                        "type": "pathmatch",
                        "expresion": "*oracle*"
                        "value": "https://www.oracle.com"
                        "flags": "caseinsensitive"
                },              
        ]
}

El valor tokenDefinitions tiene las siguientes propiedades:

  • "token": nombre del token que se va a definir.

  • "type": uno de los siguientes:

    • "hostmatch" para hacer coincidir el valor del host de la URL entrante.

    • "pathmatch" para hacer coincidir el valor del nombre de ruta de acceso de la URL entrante.

    • "querymatch" para hacer coincidir el valor de la consulta de la URL entrante.

  • "expression": expresión que se utilizará para la coincidencia. Están soportados los caracteres comodín.

  • "value": valor que se debe usar para el token.

  • "flags": por defecto, la expresión coincidente es sensible a mayúsculas/minúsculas, a menos que el valor flags se haya definido en caseinsensitive

Al calcular el valor de un token, se enumerará la matriz tokenDefinitions en orden. Se utilizará la primera definición coincidente. Si no hay ninguna definición de token que cumpla con el token, se utilizará una cadena vacía en su lugar. Para mejorar la velocidad y el rendimiento, los tokens de uso común se deben colocar al principio de la lista tokenDefinitions.

El valor tokenDefinitions tiene las siguientes restricciones:

  • Puede crear hasta 250 definiciones de tokens.

  • El nombre de token debe tener menos de 100 caracteres.

  • El valor expression puede tener hasta 10 caracteres comodín.

  • El valor de expression debe contener menos de 1000 caracteres.

  • value debe contener menos de 1000 caracteres.

Ejemplo

Por ejemplo, puede que tenga el siguiente archivo redirects.json:

{
         "redirectRules":
         [
                {
                        "type": "string",
                        "expression": "/legacy-privacy-policy.html",
                        "location": "<$pathPrefix$>/about/new-privacy-policy.html"
                },              
        ]
         "tokenDefinitions":
         [
                {
                        "token": "pathPrefix",
                        "type": "hostmatch",
                        "expression": "vanity.com"
                        "value": "/fashion"
                },                                              
        ]
}

En este caso, la propiedad location de la regla tiene un token <$pathPrefix$>. El token pathPrefix se define en la sección tokenDefinitions. Si la URL entrante coincide con "vanity.com", el valor pathPrefix se definirá en /fashion. Esto se utilizará en la respuesta location, lo que da como resultado /fashion/about/new-privacy-policy.html.

Asumamos que la primera URL personalizada es http://example.com/legacy-privacy-policy.html. Esto coincidiría con la primera y única regla de redireccionamiento.

El valor location declarado para esta regla es <$pathPrefix$>/about/new-privacy-policy.html. En esta situación, se debe evaluar el token <$pathPrefix$>. Para realizar esta acción, se enumera la matriz tokenDefinitions para encontrar una coincidencia.

Se tiene en cuenta la primera definición de token. Su token es el que se desea, por lo que se sigue evaluando. La expresión vanity.com no coincide con el valor example.com de la URL entrante, por lo que esta definición no cumple los requisitos y la enumeración continúa.

En este punto, no hay más definiciones de token, por lo que se usa la cadena vacía para el valor del token <$pathPrefix$>. La ubicación final devuelta para este redireccionamiento es /about/new-privacy-policy.html.

Asumamos que la segunda URL personalizada es http://vanity.com/legacy-privacy-policy.html. Como ocurre con la primera URL, el valor location declarado para esta regla es <$pathPrefix$>/about/new-privacy-policy.html. En esta situación, se debe evaluar el token <$pathPrefix$>. Para realizar esta acción, se enumera la matriz tokenDefinitions para encontrar una coincidencia.

Se tiene en cuenta la primera definición de token. Al igual que ocurre antes, su token es el que se desea, por lo que se sigue evaluando. La expresión vanity.com no coincide con el valor vanity.com de la URL entrante, por lo que esta definición no cumple los requisitos y el valor /fashion se usa como valor del token.

Como se ha encontrado una coincidencia para el token, se para la enumeración de la matriz de definiciones de tokens y la ubicación final se calcula como /fashion/about/new-privacy-policy.html.

Prueba de redireccionamientos de sitios

Para probar los redireccionamientos de sitios al editar un sitio, abra el panel Configuración y haga clic en Redireccionamientos. Introduzca la URL cuya prueba se va a realizar y haga clic en Probar.

Panel de prueba Redireccionamientos