Pode especificar regras de redirecionamento para os URLs num ficheiro JSON.
Utilize o formato seguinte num ficheiro JSON para especificar as regras de redirecionamento para os URLs.
{ "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 } ] }
A estrutura contentora externa no ficheiro JSON é uma matriz. A matriz contém instâncias de regras.
As regras "string"
serão avaliadas primeiro, seguidas das regras "wildcard"
, por ordem. Assim que uma das regras corresponder, a avaliação das regras subsequentes é abandonada e o redirecionamento correspondente é gerado.
Cada regra tem as seguintes propriedades:
A propriedade "comment"
é uma cadeia de caracteres opcional que não tem nenhum impacto na avaliação das regras. Inclui notas ou comentários.
A propriedade "expression"
é uma cadeia de caracteres obrigatória que efetua correspondência com o URL relativo ao site de entrada. Numa regra de caracteres de substituição, o token asterisco (*
) corresponde a zero ou mais caracteres.
A propriedade "location"
é uma cadeia de caracteres obrigatória que indica a localização ou o destino do redirecionamento. O redirecionamento pode ser um URL completo ou relativo.
A propriedade "code"
é um número inteiro opcional que fornece o código de resposta de HTTP a utilizar ao emitir o redirecionamento. O valor deve ser um dos seguintes números inteiros:
301: Indica que o recurso foi deslocado permanentemente. Este é o valor por omissão se a propriedade "code"
for omitida.
302: Indica que o recurso foi deslocado temporariamente.
A propriedade "type" é uma cadeia de caracteres opcional que indica o tipo de regra de redirecionamento. O valor deve ser uma das seguintes cadeias de caracteres:
"string"
especifica uma regra mais rápida cuja expressão corresponde de forma exata à totalidade do URL de entrada de dados.
"wildcard"
especifica uma regra de caracteres de substituição que pode corresponder a diversos URLs. Este é o valor por omissão se a propriedade for omitida.
Tokens da Localização
Pode utilizar tokens da localização para ajudar a produzir uma localização de redirecionamento. Cada um dos seguintes tokens da localização pode ajudar a especificar um redirecionamento:
<$urlPath$>
: A parte do percurso do URL correspondente.
<$urlQueryString$>
: A cadeia de caracteres de consulta do URL total do URL correspondente.
<$urlQueryStringExcept(name1,name2)$>
: A cadeia de caracteres de consulta do URL total do URL correspondente menos os parâmetros nomeados.
<$wildcard(N)$>
: O índice baseado em um do carácter de substituição correspondente no URL correspondente. (Isto é análogo a \1..\9
em expressões regulares.)
<$name$>
: O valor do parâmetro da cadeia de caracteres de consulta nomeado. Por exemplo, se tiver a cadeia de caracteres de consulta msmith: ?page=42
na entrada de dados, pode utilizar <$page$>
na localização para colocar '42'
na localização.
Restrições
As seguintes restrições aplicam-se ao ficheiro redirects.json
como um todo e às regras nele contidas:
O tamanho máximo global do ficheiro aceite pelo Oracle Content Management é 250 KB.
O número máximo de regras no ficheiro redirects.json
é 1000.
O comprimento máximo de "expression"
para uma regra é 1000 caracteres.
O comprimento máximo de "location"
para uma regra é 2000 caracteres.
O número máximo de tokens '*'
numa expressão de regra de caracteres de substituição é 10.
Exemplo de Correspondência da Cadeia de Caracteres
Regra:
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
O URL seguinte corresponderá à regra:
/old/page.jsp?id=material&type=glass
A localização resultante será: /new/material.htm
O URL corresponde na totalidade, incluindo a cadeia de caracteres de consulta.
Embora <$id$>
seja utilizado na localização, não é necessário para este exemplo porque apenas uma cadeia de caracteres de consulta poderá corresponder. A localização poderá ser escrita como /new/material.htm
.
Os URLs seguintes não corresponderão à regra:
/old/page.jsp
(A expressão da regra fornece uma cadeia de caracteres de consulta que deve corresponder.)
/old/page.jsp?id=material&type=glass&index=2
(O &index=2
extra no URL candidato não corresponde de forma exata à expressão da regra.)
/old/page.jsp?type=glass&id=material
(A ordenação dos parâmetros da cadeia de caracteres de consulta deve corresponder à regra "string".)
Exemplo de Correspondência de Caracteres de Substituição
Regra:
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
Os URLs seguintes corresponderão à regra:
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
A localização resultante será: /new/XT1045/specs.html
A parte do percurso do URL corresponde e, por isso, a cadeia de caracteres de consulta também é examinada relativamente às condições de correspondência.
Os parâmetros neste exemplo por acaso correspondem à ordenação dos parâmetros na expressão da regra, mas isto não é obrigatório.
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
A localização resultante será: /new/XT1045/specs.html
A parte do percurso do URL corresponde à expressão da regra antes do ponto de interrogação (?
) e, por isso, os parâmetros também são verificados à procura de uma correspondência.
Embora os parâmetros estejam listados por uma ordem diferente na expressão da regra, a correspondência dos parâmetros é efetuada individualmente.
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
A localização resultante será: /new/XT1045/specs.html
A parte do percurso do URL corresponde e, por isso, a cadeia de caracteres de consulta também é examinada relativamente às condições de correspondência.
O URL candidato tem um parâmetro &unrelated=thing
extra, mas como os parâmetros da consulta nomeados na expressão da regra correspondem, considera-se que a regra corresponde.
O parâmetro unrelated
estará disponível na localização como um token, como <$unrelated$>
, e terá o valor thing
, apesar de não ter contribuído para a correspondência da regra.
Os URLs seguintes não corresponderão:
/old/pages/info.jsp
(A parte do percurso do URL não corresponde à parte do percurso da expressão da regra.)
/old/phones/android/pages/info.asp
(A parte do percurso do URL corresponde à parte do percurso da expressão da regra, mas os parâmetros da consulta na expressão da regra não correspondem.)
/old/phones/android/pages/info.asp?id=cellular
(A parte do percurso do URL corresponde à parte do percurso da expressão da regra, mas nem todos os parâmetros da consulta na expressão da regra correspondem.)
Definir uma Matriz de Tokens
Pode também criar uma matriz de definições de tokens no âmbito do ficheiro redirects.json
para auxiliar na configuração de redirecionamentos que suportam vários URLs personalizados. Isto permite efetuar o redirecionamento de forma adequada com base nas características do URL de entrada.
Utilize o formato seguinte no ficheiro redirects.json
para definir os tokens a utilizar nas regras de redirecionamento para os URLs.
{ "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" }, ] }
A lista tokenDefinitions tem as seguintes propriedades:
"token"
: O nome do token a definir.
"type"
: Um dos seguintes:
"hostmatch"
para corresponder ao valor do host do URL de entrada.
"pathmatch"
para corresponder ao valor do nome do percurso do URL de entrada.
"querymatch"
para corresponder ao valor da consulta do URL de entrada.
"expression"
: A expressão que deve ser utilizada para efetuar correspondência. São suportados caracteres de substituição.
"value"
: O valor que deve ser utilizado para o token.
"flags"
: Por omissão, a correspondência da expressão é sensível a maiúsculas e minúsculas, a menos que o valor flags
esteja definido como caseinsensitive
Quando computar o valor de um token, a matriz tokenDefinitions
será enumerada por ordem. A primeira definição com correspondência será utilizada. Se nenhuma definição de token cumprir os requisitos do token, será utilizada uma cadeia de caracteres vazia em vez disso. Para efeitos de conveniência e desempenho, os tokens geralmente utilizados devem ser colocados na parte superior da lista tokenDefinitions
.
A lista tokenDefinitions
tem as seguintes restrições:
Pode criar até 250 definições de tokens.
O nome do token
deve ter menos de 100 caracteres.
O valor da propriedade expression
pode ter até 10 caracteres de substituição.
O valor da propriedade expression
deve ter menos de 1000 caracteres.
O valor da propriedade value
deve ter menos de 1000 caracteres.
Exemplo
Por exemplo, pode ter o seguinte ficheiro 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" }, ] }
Neste caso a propriedade location
da regra tem um token <$pathPrefix$>
. O token pathPrefix
está definido na secção tokenDefinitions
. Se o URL de entrada corresponder a "vanity.com", o valor de pathPrefix
será definido como /fashion
. Isto será utilizado na resposta de location
, resultando em /fashion/about/new-privacy-policy.html
.
Vamos partir do princípio que o primeiro URL do domínio personalizado é http://exemplo.com/legacy-privacy-policy.html
. Isto iria corresponder à primeira e única regra de redirecionamento.
A propriedade location
declarada para esta regra é <$pathPrefix$>/about/new-privacy-policy.html
. Nesta situação, o token <$pathPrefix$>
necessita de ser avaliado. Para tal, a matriz tokenDefinitions
é enumerada para encontrar uma correspondência.
A primeira definição do token será considerada. O respetivo token
é o pretendido, por isso continua a ser avaliado. A expressão vanity.com
não corresponde à expressão exemplo.com
dos URLs de entrada, por isso esta definição não cumpre os requisitos e a enumeração continua.
Neste momento, não existem mais definições de tokens, por isso a cadeia de caracteres vazia é utilizada para o valor do token <$pathPrefix$>
. A localização final devolvida para este redirecionamento é /about/new-privacy-policy.html
.
Vamos partir do princípio que o segundo URL do domínio personalizado é http://vanity.com/legacy-privacy-policy.html
. Tal como no primeiro URL, a propriedade location
declarada para esta regra é <$pathPrefix$>/about/new-privacy-policy.html
. Nesta situação, o token <$pathPrefix$>
necessita de ser avaliado. Para tal, a matriz tokenDefinitions
é enumerada para encontrar uma correspondência.
A primeira definição do token será considerada. Como anteriormente, o respetivo token
é o pretendido, por isso continua a ser avaliado. A expressão vanity.com
não corresponde à expressão vanity.com
dos URLs de entrada, por isso esta definição não cumpre os requisitos e o valor /fashion
é utilizado como valor do token.
Uma vez que foi encontrada uma correspondência para o token, a enumeração da matriz de definições dos tokens é interrompida e a localização final é computada como /fashion/about/new-privacy-policy.html
.
Testar Redirecionamentos de Site
Pode testar os redirecionamentos de site quando editar um site abrindo o painel Definições e clicando em Redirecionamentos. Introduza um URL para testar e clique em Testar.