diretório de redirecionamento nginx incluindo arquivos php

1

Anteriormente, os URLs do meu site eram assim:

Agora os URLs são assim:

Estou usando o seguinte:

location /forums/ {
    rewrite ^/forums/(.*)$ https://www.example.com/$1 permanent;
}

E redireciona corretamente os URLs do tipo 1, no entanto URLs como o tipo 2 estão retornando 404. Como posso fazer o nginx também redirecionar os arquivos php? Obrigado!

    
por imthebest 09.12.2017 / 23:24

1 resposta

1

O motivo pelo qual você está tendo este problema é porque as diretivas location definidas por expressões regulares têm precedência e têm a palavra final, portanto, você provavelmente tem a solicitação do processo do manipulador location ~ \.php$ .

De acordo com o link , o que você deve fazer é simplesmente adicionar o ^~ modifier para o seu código existente, para não verificar expressões regulares, assim:

location ^~ /forums/ {
    rewrite ^/forums/(.*)$ https://www.example.com/$1 permanent;
}

Outra consideração é que, embora $uri (a variável que está por trás das diretivas location e rewrite ) não contenha $is_args$args (e, portanto, $1 no exemplo acima também não), eles ainda serão adicionados automaticamente no contexto rewrite , conforme link , então nada mais precisa ser feito no código acima.

Como um bônus, uma otimização relacionada à manutenção ainda é possível - ou seja, você não precisa especificar https (ou $scheme ) e o host explicitamente, mas pode deixar o nginx calculá-lo com base no contexto.

Além disso, conforme explicado no link , você pode salvar uma instrução extra fazendo / be parte da captura.

Assim, com as duas otimizações acima, a melhor abordagem para sua situação pode ser:

location ^~ /forums/ {
    rewrite ^/forums(/.*)$ $1 permanent;
}

Veja o código acima no trabalho, que confirma que $scheme://$host (e :$server_port , somente se necessário) são adicionados automaticamente, sujeito às configurações descritas em link :

% curl -i "localhost:4441/forums/showthread.php?t=123" |& fgrep Location
Location: http://localhost:4441/showthread.php?t=123
%
    
por 10.12.2017 / 03:04

Tags