如果网址等于

时间:2015-10-02 08:19:24

标签: url redirect if-statement nginx

我的问题是NginX anf if(我知道如果是邪恶的,但我需要使用它)。 我想在两个条件下重定向访问我网站的用户。如果他们的IP匹配且URL正好是www.domain.com

Base我有一个包含2个IP和2个域的网络服务器。一个用于英语,一个用于本地语言。我想将使用本地IP的每个人重定向到本地域。 (从domain.com到domain.hu)

到目前为止我做了什么:我已经使用IP2Location安装了NginX,它就像一个魅力。这是我在nginx.conf中的“if”部分

if ($ip2location_country_short ~ ^HU$)
            {
            set $my_var1 "${my_var1}B";
            }
    if ($request_uri ~ .*wonder*.*)
            {
            set $my_var1 "${my_var1}C";
            }
    if ($my_var1 = ABC)
            {
            #rewrite ^/(.*)$ http://www.domain.hu last;
            }

我想要实现的是:使用名为$ my_var1的变量并使用它来决定是否需要重定向用户。我把它设置为第一名的“A”。 在第一个条件中:如果用户来自匈牙利,则使$ my_var1等于“AB”。接下来我想检查用户是否在浏览器中写了ENG或HU URL。如果他写了www.domain.com的确切网址,我想重定向用户。如果他这样做,那么我将$ my_var1设置为“ABC”。如果$ my_var1的值等于“ABC”,则在第3个if中,然后重新定向。

我的问题是:我不知道如何检查网址。我在编写一个PHP文件时发现了这个问题,以便在进入网站后向我显示$ my_var1的值,结果显示$ my_var1的值总是只有“AB”。我没有检查网址。你能给我一个如何检查URL包含文本/等于某事

的描述

1 个答案:

答案 0 :(得分:1)

完成!

set $my_var A;

    if ($ip2location_country_short ~ ^HU$)
            {
            set $my_var "${my_var}B";
            }
    if ($http_host ~ .*domain.com.*)
            {
            set $my_var "${my_var}C";
            }
    if ($my_var = "ABC")
            {
            rewrite ^/(.*)$ http://domain.hu last;
            }

没想到会这么容易.....