Ir para o conteúdo

Smart Rules

RegExp

Expressões regulares, também conhecidas como RegEx ou RegExp são usadas para englobar um padrão de caracteres usando alguns caracteres especiais.

Na GoCache, é possível utilizas essas expressões em alguns critérios das smart rules para que elas possam englobar situações mais complexas.

Caracteres especiais nas expressões regulares

Asterisco *: O asterisco aceita qualquer caractere qualquer número de vezes, importante saber que a GoCache interpreta o * como seria interpretado um .* no regex comum, exemplos de uso:

Critério URL: /*

  • URLs aceitos: / , /teste1 , /qualquer/coisa , /13/21fas/nkfasfp4242

Critério URL: /abc/*/def/

  • URLs aceitos: /abc//def/ , /abc/xyz/def/ , /abc/g/e/p/def/
  • URLs não aceitos: /abc/def/ , /abcdef/ , /ac//df/

Ponto .: O ponto é usado para especificar qualquer caractere uma vez. Exemplos de uso:

Critério URL: /.

  • URLs aceitos: /a , /1 , //
  • URLs não aceitos: / , /ab , /12

Critério URL: /.teste..

  • URLs aceitos: /1testeab , /oteste/a
  • URLs não aceitos: /teste , /testeabc

Colchetes []: Os colchetes são usados para especificar um grupo de caracteres que serão aceitos, esses grupos podem ser ou alguns caracteres especificados ou uma série de caracteres separados por um - como por exemplo [a-z] para ter todos os caracteres de a até z. Exemplos de uso:

Critério URL: /[abc][A1p]

  • URLs aceitos: /aA , /c1 , /bp , /cA
  • URLs não aceitos: /Aa , /aa , /aAa

Critério URL: /[a-z][1-9][A-Z]

  • URLs aceitos: /b2T , /x1B , /t9Z
  • URLs não aceitos: /A1a , /bds

Parênteses (): Os parênteses definem um grupo com uma expressão, diferente dos colchetes, os grupos definidos pelos parênteses atuam como uma expressão completa. Exemplos de uso:

Critério URL: /t(est)e

  • URLs aceitos: /teste
  • URLs não aceitos: /tse , /tee , /ttsee

Pipe |: O pipe é usado como um OU, ele aceita qualquer uma das duas expressões separadas por ele, normalmente utilizado com os parenteses. Exemplos de uso:

Critério URL: /(admin|wp-admin)/

  • URLs aceitos: /admin/ , /wp-admin/
  • URLs não aceitos: /adminwp-admin/ , /admin-wp/

Critério URL: /(teste1|admin|segredo|)

  • URLs aceitos: /teste1 , /admin , /segredo , /
  • URLs não aceitos: /teste1admin , /adminsegredo , /qualqueroutracoisa

Chaves {}: As chaves definem quantas vezes uma expressão deve aparecer, podendo ser definida uma série de quantidades separadas por uma vírgula (,) como por exemplo {5,7}. Exemplos de uso:

Critério URL: /(ab){1,3}/

  • URLs aceitos: /ab , /abab , /ababab
  • URLs não aceitos: /abababab , /aaa

Critério URL: /[a-z]{5}

  • URLs aceitos: /abcde , /teste , /admin
  • URLs não aceitos: /abc , /testee , /az

Sinal de adição +: O sinal de adição define que uma expressão pode aparecer uma ou mais vezes. Exemplos de uso:

Critério URL: /(ab)+/

  • URLs aceitos: /ab , /abab , /ababab , /ababababababababab
  • URLs não aceitos: /abababa , / , /aaaaaaa

Critério URL: /[a-z]+

  • URLs aceitos: /abcde , /testeteste , /adminaaaaaaa , /yz
  • URLs não aceitos: /123 , /ABC

Barra invertida \: A barra invertida é usada para usar o caractere literal, tirando a característica de caractere especial, por exemplo, ao usar o \. o ponto perde sua característica de aceitar qualquer caractere e aceita apenas um ponto mesmo. Exemplos de uso:

Critério URL: /imagem\.jpg

  • URLs aceitos: /imagem.jpg
  • URLs não aceitos: /imagemajpg , /imagem1jpg

Critério URL: /*\.(css|js)

  • URLs aceitos: /script.js , /style.css
  • URLs não aceitos: /scriptjs , /stylecss

Ponto de interrogação ?: O ponto de interrogação é usado para definir que pode ter ou não uma expressão especificada. Exemplos de uso:

Critério Cabeçalho de requisição: Teste:(te)?ste

  • Cabeçalhos aceitos: Teste:ste , Teste:teste
  • Cabeçalhos não aceitos: Teste:tste , Teste:

Critério Cabeçalho de requisição: Referer:https?://(*\.)?exemplo.com/

  • Cabeçalhos aceitos: Referer:http://exemplo.com/ , Referer:https://www.exemplo.com/
  • Cabeçalhos não aceitos: Referer:httpa://exemplo.com/ , Referer:https://aaaexemplo.com/

Cifrão $: O Cifrão é usado em ações ao invés de critérios, o Cifrão pega uma expressão que foi encontrada no critério e aplica essa expressão como uma variável na ação, dependendo da ordem que foram encontradas as expressões. Exemplos de uso:

Critério URL: http://exemplo.com/*
Acão de redirecionamento: https://exemplo.com/$1
Nesse caso se o url for http://exemplo.com/teste o redirecionamento será para https://exemplo.com/teste

Critério URL: http://exemplo.com/([a-z]+)([1-9]+)
Acão de redirecionamento: https://exemplo.com/$2$1
Nesse caso se o url for http://exemplo.com/teste123 o redirecionamento será para https://exemplo.com/123teste

Caracteres específicos

Nulo -: Esse caractere significa um valor vazio, funciona apenas para os critérios: User Agent e Referer Host. Se esse caractere for definido em um desses dois critérios, significa que ele aceitará um User Agent ou Referer Host sem nada. Exemplo de uso:

Critério User Agent: -
User Agent aceito:

Negação !: Esse caractere informa "tudo menos",funciona apenas para os critérios: User Agent; Referer Host e País. Exemplo de uso:

Critério User Agent: !abc
User Agent NÃO aceito: abc

Ambos os caracteres podem ser usados em conjunto com outros caracteres regex conforme mostra o exemplo abaixo:

Critério User Agent: !(abc[12]|-)
User Agents NÃO aceitos: abc1 ,  , abc2

Funcionamento de caracteres por critério

Importante reforçar que alguns caracteres não funcionam como expressões regulares para alguns critérios, aqui a lista de quais caracteres funcionam como expressões regulares para cada critério de smart rule:

Caracteres especiais que funcionam como regex por critério(Critério - Caracteres):

  • URL - Asterisco, Ponto, Colchetes, Parênteses, Pipe, Chaves, Sinal de adição e Barra invertida.

  • Conteúdo de Cookie - Todos os caracteres comuns são aceitos (Nesse critério o asterisco é considerado como aceitar o último caractere qualquer número de vezes, para usar ele como ele é usado em outros critérios use .*)

  • Cookies - Ponto e Asterisco

  • User Agent - Todos os caracteres funcionam

  • HTTP Referer - Todos os caracteres funcionam

  • Cabeçalho de requisição - Todos os caracteres comuns funcionam

  • País de Origem - Pipe e negação

  • Endereço de IP ou Range - Nenhum funciona

Ações que aceitam o Cifrão($) como expressão regular:

As seguintes ações aceitam o Cifrão($), como uma expressão regular conforme explicado anteriormente: URL de destino e Sobrescreve URI.

Exemplos de uso de regex nas smart rules

Alguns exemplos de como os caracteres especiais podem trabalhar em conjunto para criar algumas regras avançadas:

Redirecionamento de http para https

redirect

Critério URL: http://exemplo.com.br Ação redirecionar URL: https://$1exemplo.com.br$2

Essa regra redireciona todo tráfego http de qualquer subdomínio para https. Os wildcards pegam qualquer subdomínio e qualquer caminho com os cifrões, as informações encontradas são recolocadas no url com https.

CORS específico para algumas origens

redirect

Critério URL: /imagem.png Critério cabeçalho de requisição: Origin:https?://(*\.)?quero-uma\.imagem Ação Define Cross-Origin: *

Essa regra retorna o wildcard para o cabeçalho CORS apenas para as origens que se encaixam no regex, o regex aceitará http ou https graças ao ? depois do s, além disso ele aceitará qualquer subdomínio de quero-uma.imagem graças ao (*\.), que aceita qualquer número de caracteres antes do ponto, além disso, é necessária uma \ antes do ponto para poder aceitar o ponto ao invés de qualquer caractere.