Localização Nginx $ request_filename não definido com regra de reescrita

2

Quando eu escrevo o local, ele funciona, quando eu uso o mesmo local como regra de reescrita, ele não funciona !!! Eu não entendo a lógica. Alguém pode explicar por favor?

   location /v3/ {
            alias /var/www/api/v3/html/;
            echo $document_uri;
            echo $document_root;
            echo $request_filename;
            echo $request_uri;
            echo $fastcgi_script_name;
   }

Quando faço o acima, obtenho

/v3/info.php
/var/www/api/v3/html/
/var/www/api/v3/html/info.php
/v3/info.php
/v3/info.php

Mas se eu alterar agora a localização para reescrever:

   location ~ ^/(v\d+)/ {
            alias /var/www/api/$1/html/;
            echo $document_uri;
            echo $document_root;
            echo $request_filename;
            echo $request_uri;
            echo $fastcgi_script_name;
   }

Os caminhos estão todos ferrados:

/v3/info.php
/var/www/api/v3/html/
/var/www/api/v3/html/
/v3/info.php
/v3/info.php

Por que?

    
por Christian 10.04.2014 / 20:54

1 resposta

3

Do bilhete nginx # 657 :

That's expected behaviour. In a location defined by a regular expression alias defines full path, so you have to use:

location ~ ^/(v\d+)/(.*) {
    alias /var/www/api/$1/html/$2;
    return 200 "request_filename: $request_filename";
}
    
por 05.11.2014 / 12:20

Tags