nginx - nenhum ssl para crawlers / bots

1

Em uma diretiva de servidor para a porta 80 no nginx, desejo redirecionar todas as solicitações para https, se o agente do usuário não for um bot. Eu tentei usar isso:

...
location / {
    if ($http_user_agent !~* (bot|spider|crawler|sniffer|facebook) ) {
        return 301 https://host.com$request_uri;
    }

    include other-stuff.inc;
}

Eu achei que o nginx pararia no return , mas não. Ainda processa o include (que atende ao site normal) e não redireciona. (Se eu comentar o include ele faz o redirecionamento, no entanto). Btw: Um break também não funciona.

    
por quape 16.01.2015 / 15:45

1 resposta

0

Embora alguma parte da configuração do nginx possa se assemelhar ao código do programa, na verdade não é. A ordem é importante apenas para ifs (nem sempre) e para correspondência de localização. Então inclui não são não são analisados por algum ponteiro de instrução hipotética, pelo menos no caso acima. Essa é a razão pela qual sua declaração include funciona, independentemente da correspondência.

    
por 16.01.2015 / 16:03

Tags