Tentando reescrever / directory / dir_variable / to /directory/dir_variable/index.php

1

Estou tentando reescrever algo assim:

domain.tld / staging / base_1 / para domain.tld / staging / base_1 / index.php, em que '1' é um número variável.

mas estou recebendo um ciclo de redirecionamento.

*1 rewrite or internal redirection cycle while processing "/staging/base_1//index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php ....

Aqui está a diretiva de localização que estou usando, a qual eu li os documentos e parece que funcionaria, mas obviamente estou perdendo alguma coisa.

location ~* /staging/(.*) {
    rewrite ^/staging/(.*)$ /staging/$1/index.php last;
}
    
por Michael Hill 24.03.2015 / 23:42

2 respostas

0

Talvez seja necessário reler o documento conforme explicado aqui:

Syntax:   rewrite regex replacement [flag];
Default:  —
Context:  server, location, if

[ ... ]

An optional flag parameter can be one of:

last 
   stops processing the current set of ngx_http_rewrite_module
   directives and starts a search for a new location matching the changed
   URI;

break
    stops processing the current set of ngx_http_rewrite_module
    directives as with the break directive;

redirect returns a temporary
    redirect with the 302 code; used if a replacement string does not
    start with “http://” or “https://”; permanent returns a permanent
    redirect with the 301 code.

Então, quando você usa o last , é como um redirecionamento interno para o nginx. Eu estou supondo que você declarou um location ~ \.php$ bloco após este, a fim de processar arquivos php, mas não será escolhido no processo de eleição de localização, porque o primeiro regex correspondente ganha. Assim, ele entra no primeiro bloco de localização recursivamente.

    
por 25.03.2015 / 00:12
0

Tente algo como:

location ~* /staging/(.*) {
    rewrite ^/staging/(.*)/$ /staging/$1/index.php break;
}

ou para limitar a um nível:

location ~* /staging/(*) {
    rewrite ^/staging/([^/]*)/$ /staging/$1/index.php break;
}
    
por 24.03.2015 / 23:52

Tags