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)
应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)
这里有一个关于正则表达式的有用网站。
| 归档时间: |
|
| 查看次数: |
3607 次 |
| 最近记录: |