此处是URL没有显示欢迎和主页字样的位置。
location ~* "^\/(?!\b(welcome|home)\b)[^\/\.]*$" {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
proxy_redirect off;
proxy_read_timeout 180;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_pass http://127.0.0.1:3000/custom-pages/$1$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}我想在$1变量中传递slug。
发布于 2019-11-22 00:16:01
你可以像@Richard已经建议的那样使用$uri来获取完整的url,但是如果你有一个稍微复杂的位置,比如/my-directory/<<slug>>,那么$uri就不能满足你的需要了。
对于这种情况,您可以很容易地使用捕获组作为([^\/\.]*)并在$2中获取它
location ~* "^\/my-directory\/(?!\b(welcome|home)\b)([^\/\.]*)$" {
...
proxy_pass http://127.0.0.1:3000/custom-pages/$2$is_args$args;
...
}此外,您的负面前视(?!\b(welcome|home)\b)将丢弃所有以欢迎或home开头的位置,如/welcome-here或/home-is-where-u-r。
因此,为了能够捕获这些内容并仅丢弃/home和/welcome,只需将其更改为(?!(welcome|home)$)即可
https://stackoverflow.com/questions/52029452
复制相似问题