Nginx reescreve com a instrução if

4

Temos o arquivo CSS "development.css", mas para os usuários do IE eu preciso redirecioná-los para "production.css". Há uma regra de localização para isso:

location = /css/development.css {
  if ($http_user_agent ~* 'Trident') {
    rewrite ^(.*)$ /css/production.css redirect;
  }
}

O redirecionamento funciona corretamente para o IE, mas para todos os outros navegadores é 404. O "if" do Nginx não tem "else"; qual é a maneira correta de lidar com ifs com reescrita?

    
por softshape 17.01.2018 / 04:38

2 respostas

6

Recomendamos que você use o nginx mapa . Algo parecido com isto (escrito no navegador, não testado):

map $http_user_agent $envtype {
    default       "production";
    "~Trident" "development";
}

rewrite /css/development.css /css/$envtype.css;
    
por 17.01.2018 / 06:33
1

Então esse é o código que funciona.

    location = /css/development.css {
        if ($http_user_agent ~* 'Trident') {
            rewrite ^(.*)$ /css/production.css last;
        }
        alias C:/Work/src/css/development.css;
    }
    
por 17.01.2018 / 05:58

Tags