微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重定向 – 子域的Nginx变量?

我需要一个Guru的建议.

Nginx的conf文件中,我想将子域作为变量,以便重定向访问,如下所示.

>访问:http://userX.example.com/?hoo = bar
> REDIRECT:http://example.com/userX/?hoo = bar

但我明白了

> REDIRECT:http://example.com/userX.example.com/?hoo = bar

我当前的_http.conf设置如下所示.所以很明显它是有效的.

## default HTTP
server {
    listen       80;
    server_name  default_server;
    return       301 http://example.com/$host$request_uri;
}

下面是否有任何变量或方法

## default HTTP
server {
    listen       80;
    server_name  default_server;
    return       301 http://example.com/$subdomain$request_uri;
}

我知道如果子域部分是有限的,它可以被重定向,但我必须每次都添加它们,我希望它尽可能简单.

有没有简单的方法呢?

[ENV]:CentOS:7.3.1611,NginxNginx / 1.13.3,* .example.com在NS设置中针对同一台服务器.

结论(2017/12/13)

使用正则表达式:

server {
    listen       80;
    server_name  ~^(?<subdomain>.+)\.example\.com$;
    return       301 http://example.com/$subdomain$request_uri;
}

参考:Comment,Document

解决方法:

您可以使用server_name中的正则表达式来提取您需要的部分作为命名捕获.例如:

server {
    listen       80;
    server_name  ~^(?<name>.+)\.example\.com$;
    return       301 http://example.com/$name$request_uri;
}

有关更多信息,请参见this document

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐