首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从没有运算符的nginx位置捕获变量

如何从没有运算符的nginx位置捕获变量
EN

Stack Overflow用户
提问于 2018-08-27 03:09:30
回答 1查看 73关注 0票数 0

此处是URL没有显示欢迎和主页字样的位置。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2019-11-22 00:16:01

你可以像@Richard已经建议的那样使用$uri来获取完整的url,但是如果你有一个稍微复杂的位置,比如/my-directory/<<slug>>,那么$uri就不能满足你的需要了。

对于这种情况,您可以很容易地使用捕获组作为([^\/\.]*)并在$2中获取它

代码语言:javascript
复制
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)$)即可

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52029452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档