Nginx - reescreve ou retorna para redirecionamento?

14

Eu tenho duas opções (retornar e reescrever) para redirecionamento e não tenho certeza do que é recomendado para o desempenho, SEO, etc:

## Redirect from non-www to www
server {
        server_name example.com;
        # Option 1
        return 301 $scheme://$host$request_uri;

        # Option 2
        rewrite ^ http://$host$request_uri? permanent;
    }

## Default server config

server {
        ...
        listen      192.168.1.1:80 default_server;
        root        /www;
        server_name www.example.com;

A opção 2 parece funcionar com o curl mas não está sendo redirecionada quando chamada por um navegador e o código de retorno é o de um redirecionamento temporário, apesar de a diretiva de reconfiguração estar definida como permanent :

 curl -I example.com
 HTTP/1.1 302 Moved Temporarily
 Server: nginx
 ...
 Location: http://www.example.com/
 ...
    
por HTF 12.07.2012 / 09:42

1 resposta

17

Sua opção 1:

return 301 $scheme://$host$request_uri;

É exatamente o que você quer.

Não sei por que a linha rewrite ^ http://$host$request_uri? permanent; resultaria em 302 em vez de 301. Essa é a sintaxe adequada para forçá-la a retornar um 301.

    
por 12.07.2012 / 10:41

Tags