Como simplificar o Nginx Mapeando as regras de regex?

1

Não sei se esta questão é permitida ou não. Se não, perdoe-me :)
De qualquer forma, eu tenho uma regra de mapeamento para o redirecionamento nginx

/hotel/xyz/abc  /hotel/xyz/abc-nana;
/hotel/xyz/abc/  /hotel/xyz/abc-nana;
~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1;

Minha pergunta é, eles podem ser combinados em uma regra? Eu não sei regex bem

    
por Oscar Yuandinata 18.10.2016 / 08:49

1 resposta

0

Suponho que xyz e abc significam qualquer cadeia alfanumérica. Então você está procurando uma regra como esta:

location ~ ^/hotel/([0-9a-z]+)/([0-9a-z]+)/?$ {
    rewrite ^ http://$host/hotel/$1/$2-nana$is_args$args permanent;
}

(0-9a-z]+) corresponde a qualquer sequência alfanumérica com uma ou mais correspondências. Os resultados são armazenados nas variáveis $1 e $2 . A última correspondência de barra é opcional ( ? especifica 0 ou 1 correspondências).

No nginx, não é possível corresponder aos argumentos de consulta nas instruções location ou rewrite . No entanto, se você quiser apenas adicionar possíveis argumentos de consulta sem modificação ao redirecionamento, então $is_args$args é suficiente para isso.

    
por 18.10.2016 / 09:57