nginx 中的位置重写规则

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

所有的路径都乱了:

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

怎么会??

答案1

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

例如:

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

相关内容