For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

Sam10's avatar
Sam10
Icon for Altostratus rankAltostratus
Jul 23, 2020

url redirect irule

I am trying to get an irule working for redirecting a url to a different one.

 

When users connect *.host1.abc.com it needs to redirect to *.host2.xyz.com

 

when HTTP_REQUEST {

  if { [class match [string tolower [HTTP::host]] contains *.host1.abc.com redirect] } {

            *.host2.xyz.com

        #log local0. "Client [IP::client_addr]:[TCP::client_port] -> [HTTP::host][HTTP::uri]" }

}

}

 

 

5 Replies

  • i tried using the below irule no luck so trying to understand where my logic is failing. If i can get the working irule that would be great

     

    when HTTP_REQUEST {

     if { [class match [string tolower [HTTP::host]] contains *.host1.abc.com ] } {

              { HTTP::redirect " *.host2.xyz.com" /[HTTP::uri]

           #log local0. "Client [IP::client_addr]:[TCP::client_port] -> [HTTP::host][HTTP::uri]" }

     

     }

    }

     

  • Hi Sam10,

    Can you try this?

    when HTTP_REQUEST {
        if { [string tolower [HTTP::host]] contains "host1.abc.com" } {
    		set host [string map -nocase {"host1.abc.com" "host2.xyz.com"} [HTTP::host]]
    		HTTP::redirect "http://$host[HTTP::uri]"
    	}
    }
  • No luck , still running into the issue , page cannot be displayed.

    I see the response going to the backend server , but server never responding back. I see a syn from F5 ,after 3 TCP retransmission from F5 , no response from the server . F5 is closing the connection .

     

    This is the request i see in wireshark from client to F5.

     

       GET / HTTP/1.1

    Host: tools.host1.abc.com

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

    Accept-Language: en-US,en;q=0.5

    Accept-Encoding: gzip, deflate, br

    Connection: keep-alive

    Upgrade-Insecure-Requests: 1

     

     

    But no response from the backend the server.

     

     

  • thankyou , finally got this working as expected.

     

    1. when HTTP_REQUEST {
    2. if { [string tolower [HTTP::host]] contains "host1.abc.com" } {
    3. set host [string map -nocase {"host1.abc.com" "host2.xyz.com"} [HTTP::host]]
    4. HTTP::redirect "http://$host[HTTP::uri]"
    5. }
    6. }