通过lua重写:匹配主机

时间:2019-05-28 15:50:18

标签: nginx lua

我有这个lua脚本,可以根据用户的浏览器启动情况对其进行重定向。

use RumblWeb, :view

我只想匹配以location = / { rewrite_by_lua ' for lang in (ngx.var.http_accept_language .. ","):gmatch("([^,]*),") do if string.sub(lang, 0, 2) == "en" then ngx.redirect("/en/index.html") end if string.sub(lang, 0, 2) == "nl" then ngx.redirect("/nl/index.html") end if string.sub(lang, 0, 2) == "de" then ngx.redirect("/de/index.html") end end ngx.redirect("/en/index.html") '; } 结尾的网址 知道如何添加条件吗?

结果应该是这样的:

mysite.org

1 个答案:

答案 0 :(得分:0)

在没有您确切输入的全部详细信息的情况下,我认为以下内容应该有效:

location = / {
    rewrite_by_lua '
        for lang in (ngx.var.http_accept_language .. ","):gmatch("([^,]*),") do
          lang = lang:sub(1, 2)
          if host:match("mysite%.org$") then
            if lang == "en" then ngx.redirect("/en/index.html")
            elseif lang == "nl" then ngx.redirect("/nl/index.html")
            elseif lang == "de" then ngx.redirect("/de/index.html")
            end
          end
        end
        ngx.redirect("/en/index.html")
    ';
}

还请注意使用elseif来缩短代码。另一方面,可以省略对“ en”语言的显式检查,因为这是默认的直通情况。