Em um dos blocos server
, você tem um bloco location ~ \.php
ao lado do bloco location
que contém o rewrite statements. That regular expression
location block takes precedence when evaluating URIs which end with
.php '.
Uma opção é mover as instruções reescritas para o bloco server
, caso em que elas serão executadas antes de qualquer bloco location
escolhido. Por exemplo:
server {
...
rewrite ^/sub1/?(.*)$ https://sub1.example.com/$1 permanent;
rewrite ^/sub2/?(.*)$ https://sub2.example.com/$1 permanent;
rewrite ^/sub3/?(.*)$ https://sub3.example.com/$1 permanent;
rewrite ^/sub4/?(.*)$ https://sub4.example.com/$1 permanent;
location / {
}
location ~ \.php$
{
...
}
...
}
Como alternativa, uma solução mais eficiente seria colocar as instruções de reescrita dentro de locais de prefixo individuais, mas use o modificador ^~
para dar a eles uma precedência mais alta. Consulte este documento para obter detalhes.
location ^~ /sub1 {
rewrite ^/sub1/?(.*)$ https://sub1.example.com/$1 permanent;
}
location ^~ /sub2 {
rewrite ^/sub2/?(.*)$ https://sub2.example.com/$1 permanent;
}
location ^~ /sub3 {
rewrite ^/sub3/?(.*)$ https://sub3.example.com/$1 permanent;
}
location ^~ /sub4 {
rewrite ^/sub4/?(.*)$ https://sub4.example.com/$1 permanent;
}