如何使用带有网址中变量的F5 iRules重定向

时间:2018-12-19 16:58:04

标签: url-redirection big-ip irule

嗨,我是F5 iRule的新手。

我正在尝试重定向 https://website1.com/userid=1234https://website2.com/userid=1234

这样,用户ID可能具有的任何值都将在重定向后保留。

我认为userid值应该设置为变量。 有人可以共享要使用的代码吗?谢谢!

因此,https://website1.com/userid=8888应该转到https://website2.com/userid=8888,依此类推。

1 个答案:

答案 0 :(得分:1)

如果该模式是一致的,则不需要变量。一个简单的规则是:

when HTTP_REQUEST {
  if { [HTTP::host] eq "website1.com" } {
    HTTP::redirect https://websitesite2.com[HTTP::uri]
  }
}

但是,如果您使用的是v11.4 +,则您确实应该为此使用本地流量策略,因为它作为TMOS的内置功能更具性能。

ltm policy sample_site_redirect {
    controls { forwarding }
    last-modified 2018-12-20:09:33:02
    requires { http }
    rules {
        full_uri_redirect {
            actions {
                0 {
                    http-reply
                    redirect
                    location tcl:https://website2.com[HTTP::uri]
                }
            }
            conditions {
                0 {
                    http-host
                    host
                    values { website1.com }
                }
            }
        }
    }
    status published
    strategy first-match
}

如果此规则或策略所附加到虚拟服务器的所有流量仅用于website1,则可以消除这些情况。我不想假设。如果只是要以/ user =开头并要重定向的URI,则可以通过以下方式进行操作:

when HTTP_REQUEST {
  if { ([HTTP::host] eq "website1.com") && ([string tolower [HTTP::uri]] starts_with "/user=") } {
    HTTP::redirect https://website2.com[HTTP::uri]
  }
}