nginx 重写 url 并删除最后一部分

Nur*_*jan 5 nginx url-rewriting

对不起,如果这个问题被问了很多次。我无法让 nginx 进行正确的重写。我需要删除网址的最后一部分。例如,这是我拥有的网址:

https:/mydomain.com/this/is/some/url/page/0
https:/mydomain.com/this/is/some/url/page/1
Run Code Online (Sandbox Code Playgroud)

我需要将这些都重写为:

https:/mydomain.com/this/is/some/url
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止尝试过的:

location / {

    ...
    rewrite ^/(.*)/page/0|1$ $1 last;

    ...
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。在我看来它是正确的?这有什么问题?(我讨厌正则表达式)。

编辑:

location / {
    # Remove trailing double slashes.
    if ($request_uri ~ "^[^?]*?//") {
        rewrite "^" $scheme://$host$uri permanent;
    }
    # Remove trailing slashes.
    rewrite ^/(.*)/$ /$1 permanent; 

    # Rewrite page/0 and page/1 from url.
    rewrite ^/(.*)/page/[01]$ /$1 last;

    proxy_pass                      http://backend_web;
    proxy_set_header                Host $host;
    proxy_set_header                X-Real-IP $remote_addr;
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*ith 3

0|1位于括号内或重新定义为字符类。

重写的 URI 需要一个前导,/因为所有nginxURI 都有一个前导/

所以所有这些应该是等价的:

rewrite ^/(.*)/page/(0|1)$ /$1 last;
rewrite ^/(.*)/page/[01]$ /$1 last;
rewrite ^(/.*)/page/[01]$ $1 last;
Run Code Online (Sandbox Code Playgroud)

这里有一个关于正则表达式的有用网站。