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/testeCrité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 usá-lo 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
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
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.