Forum Discussion

Chenco_322726's avatar
Chenco_322726
Icon for Nimbostratus rankNimbostratus
Nov 08, 2017

Url redirect to a subdomain from sepcific URi to subdomain with the same URi

Hello,

 

We need to achieve this :

 

(or whatever url after the “mobile”) redirect/rewrite it to : mobile.newdomain.com/news.asp (or whatever url that was entered after the “mobile” in the first place).

 

Our irule looks like this currently:

 

when HTTP_REQUEST { if {([string tolower [HTTP::host]] eq "mobile.domain.com")} { HTTP::respond 301 Location "https://mobile.newdomain.com[HTTP::uri]"

 

} if {([string tolower [HTTP::uri]] contains "/mobile")} {HTTP::respond 301 Location ";} }

 

What happens it when going to : “” it redirects to “mobile.newdomain.com” as it should. But when entering “” it redirects to “mobile.newdomain.com/mobile/news.asp” Any help would be much appreciated! thank you!

 

2 Replies

  • Hi!

     

    Using the pre-formatted option in the forum makes the iRule readable:

     

    when HTTP_REQUEST { set if { [HTTP::host] eq "mobile.domain.com" } { HTTP::respond 301 Location "https://mobile.newdomain.com[HTTP::uri]" } if { [string tolower [HTTP::uri]] contains "/mobile" } { HTTP::respond 301 Location "https://mobile.newdomain.com"; } }

    You state in your question that:

     

    • -> mobile.newdomain.com
    • -> mobile.newdomain.com/mobile/news.asp

    Looks like the example needs to be updated?

     

    Another tip is to exampine Chrome developer tools to see where the redirect came from (check the server header). Sometimes requests reaches the application.

     

    Final tip, don't set up if conditions with a result of a redirect where both can be matched. It could lead to unpredictable results and/or error messages in your logs. Better to use if/elseif. :)

     

    /Patrik

     

  • Try this rule instead (untested for syntax errors)?

    when HTTP_REQUEST {
    
        if { [HTTP::host] eq "mobile.domain.com" } { 
            HTTP::respond 301 Location "https://mobile.newdomain.com[HTTP::uri]"
        } elseif { [string tolower [HTTP::uri]] contains "/mobile" } { 
            HTTP::respond 301 Location "https://mobile.newdomain.com[string map -nocase { "/mobile" "" } [HTTP::uri] ]";
        }
    
    }