重写nginx中的位置规则

当我写入位置,它的工作原理,当我使用相同的位置作为重写规则,它不!!! 我不明白这个逻辑。 有人可以解释吗?

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

当我做到以上,我得到

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

但是,如果我现在改变位置使用重写:

  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; } 

所有的path都搞砸了:

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

怎么来的??

您需要匹配整个url才能执行此操作。

例如:

 location ~ ^/(v\d+)/(.*) { alias /var/www/api/$1/html/$2;