Isso deve ser feito:
location ~ ^/(news|blog)/(.+)/index\.php$ {
return 301 /article/$1;
}
Adicionei as âncoras inicial e final ( ^ e $ ), escapei da extensão para php ( \. ) e, mais importante, alterei a seção intermediária para (.+) , que captura um ou mais caracteres entre as barras para a variável. Isso significa que o regex não corresponderá aos scripts de arquivo antigos.