nginx reescreve o URL base

8

Gostaria da URL raiz

http://www.example.com

para redirecionar para

http://www.example.com/something/else

Isso ocorre porque alguns plugins WP estranhos sempre definem um cookie no URL base, o que não me deixa armazená-lo em cache.

Eu tentei esta diretiva:

location / {
    rewrite  ^  /something/else  break;
}

Mas 1) não há redirecionamento e 2) as páginas começam a gravar mais de 1.000 solicitações para o meu servidor. Com este aqui:

 location / {
        rewrite  ^  http://www.example.com/something/else  break;
    }

O Chrome reporta um loop de redirecionamento.

Qual é o regexp correto para usar?

    
por ptn777 25.03.2012 / 00:20

4 respostas

5

Você realmente deseja corresponder exatamente o URL raiz em seu bloco de localização, não "absolutamente tudo":

location = / {
    rewrite ^ /something/else break;
}
    
por 25.03.2012 / 00:44
1

Isso deve fazer o trabalho:

location / {
   rewrite  ^/$  /something/else  break;
}
    
por 25.03.2012 / 00:30
1

A % declaração derewrite executa uma reconfiguração interna por padrão, a menos que o destino seja um URL absoluto ou você defina a redirect ou permanent flags. Algo como isso retornaria um redirecionamento HTTP para o cliente:

rewrite ^/$ /something/else redirect;
    
por 25.03.2012 / 08:10
0

Ou você pode fazer isso:

location = / {
     rewrite ^/$    http://example.com/an/other/path;
}

O Nginx envia um redirecionamento HTTP 302 para o cliente automaticamente quando o URL de reescrita começa com o esquema "http".

    
por 25.03.2012 / 16:21