Nginx重写-从静态资源的URL中删除路径段?

Nginx重写-从静态资源的URL中删除路径段?,nginx,url-rewriting,Nginx,Url Rewriting,我有以下网址: https://example.com//v1/a/b 我想把它改写成https://example.com//index.php?v=v1&p1=a&p2=b,并使用下面的正则表达式设法做到这一点 我还从index.php调用了以下静态URL: https://example.com//v1/a/b/assets/images/intro.png 如何将所有资产重定向到其正确位置?这是: https://example.com//assets/... 以下是我目前的设置: se

我有以下网址:

https://example.com//v1/a/b

我想把它改写成
https://example.com//index.php?v=v1&p1=a&p2=b
,并使用下面的正则表达式设法做到这一点

我还从
index.php
调用了以下静态URL:

https://example.com//v1/a/b/assets/images/intro.png

如何将所有
资产
重定向到其正确位置?这是:

https://example.com//assets/...

以下是我目前的设置:

server {
    root /var/www/html;
    index index.html index.php;
    server_name _;

    location / {
      try_files $uri $uri/ @rewrites;
    }

    location @rewrites {
      rewrite ^(.*)/(.*)/(.*)/(.*)/?$ $1/index.php?a=$2&b=$3 last;
    }

    location ~ \.php$ {
      fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    }
}

如果指向资产的URI包含字面单词
/assets/
,则只需要一个与该URI部分匹配的正则表达式

例如:

location ~ ^(/[^/]+)(/.*)?(/assets/.*)$ {
    try_files $1$3 =404;
}

正则表达式捕获第一个单词(使用字符类
[^/]
匹配任何非
/
字符),以及从单词
资产
到URI结尾的所有内容,这两个内容随后都会在
try_files
语句中使用。

谢谢大家,但是一个关键问题仍然存在——我需要捕获域之后的第一个段,以便知道在哪个目录中搜索文件。e、 例如,我需要URL的
模板
部分作为变量用于
try_文件
,如何实现这一点?模板的值在
$1
中捕获。啊,太棒了!由于某种原因,我一直以为
$1
包含域,直到我意识到匹配的开始是从域后的
$uri
开始的,谢谢!