Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

IRule for redirect based on url

sundogbrew
Altocumulus
Altocumulus

I am trying to do a irule redirect for urls. I am trying to trick something for a DR situation. I have a redirect service that is off campus. So for my DR situation I have a closed off network. I trick the DNS with a dns translation on my firewall and point the three different hosts to the same IP on the F5. I created a VIP on that IP and am trying to write and IRule that will redirect based on the URL you think you came from.

 

So if I goto the dns redirects me to 1.1.1.1 on my F5 I want to redirect that to which is here one of the urls is vip-joe. I wanted to do an if else rewrite but couldn't get it to work. Tried if { [http::host] contains "darmap"} with a redirect. Really lost and tired. Any help would be greatly appreciated. Thanks Joe

 

6 REPLIES 6

P_K
Altostratus
Altostratus

Can you post your iRule? Mask any confidential info.

 

RaghavendraSY
Altostratus
Altostratus

I also want to verify irule.Please post your irule

 

sundogbrew
Altocumulus
Altocumulus

I tried three things...

    when HTTP_REQUEST {
    if { [http::host] contains "*bla*"}{
        HTTP::redirect "https://www.bla.com"
    }  elseif { [HTTP::uri] contains "*zip*"}{
        HTTP::redirect "https://www.zip.com"
    }  elseif { [HTTP::uri] equals "*stuff*"}{
        HTTP::redirect "https://stuff.com"
    } else { pool PFA_NodePool_All
    }
    }

SEcond try

        when HTTP_REQUEST { 
        switch -glob [HTTP::path] {
        "vip-bla*" {
        HTTP::redirect "https://newbla.com"
        }
        "bla*" {
        HTTP::redirect "https://newbla.com"
        }
        "zip*" {
        HTTP::redirect "https://newzip.com"
        }
        "zip*" {
        HTTP::redirect "https://newzip.com"
        }
        "stuff*" {
        HTTP::redirect "https://newstuff.com"
        }
        default {HTTP::redirect "https://otherstuff.com"}
        }
        }

Third try...

        when HTTP_REQUEST { 
        switch -glob [HTTP::uri]{
        "if { [HTTP::uri]contains"*bla*"}{
        HTTP::redirect "https://bla.com"
        }
        "elseif { [HTTP::uri]contains"*vip-bla*"}{
         HTTP::redirect "https://bla.com"
        }
        "elseif{ [HTTP::uri]contains"*zip*"}{
        HTTP::redirect "https://zip.com"
        }
        else {HTTP::redirect "https://otherstuff.com"}
        }
        }

At the end I tried to shorten it to see if I could get anything to work, the last one won't build so there is a syntax error. If you couldn't tell already my IRule building starts with devcentral search and try to fit it to what I am doing. Thanks Joe

Jad_Tabbara__J1
Cirrostratus
Cirrostratus

Just to correct your irules :

First

 when HTTP_REQUEST {
    if { [string tolower [HTTP::host]] contains "bla"}{
        HTTP::redirect "https://www.bla.com"
    }  elseif { [string tolower [HTTP::uri]] contains "zip"}{ 
        HTTP::redirect "https://www.zip.com"
    }  elseif { [string tolower [HTTP::uri]] equals "stuff"}{
        HTTP::redirect "https://stuff.com"
    } else { 
       pool PFA_NodePool_All
    }
    }

Hi,

Can you help me on this to redirect the path:


https://mcconxvip001.ucsfmedicalcenter.org:81/files/ADM/index.html

 

Run below iRule but not working.

 


if { [HTTP::uri] equals "/"}
{
HTTP::redirect "https://[HTTP::host]/files/ADM/index.html"
}
}

 

sundogbrew
Altocumulus
Altocumulus

Hey guys, Thanks so much for your help. The test ended on Friday and I was off yesterday. Unfortunately it ended before I was able to get this working. I was working on a lot of other problems so this could not be my main focus. But I have a base to start with for next test. I think with logging enabled I would be able to find the problem and resolve it.

 

Thanks again. Joe