Forum Discussion

johnmervin_4578's avatar
johnmervin_4578
Icon for Altostratus rankAltostratus
Feb 16, 2017

Need to replace URL and URI

I am looking for a irule so that when I hit john.a.com\A it need to redirect to http://whoisjohn.a.com/shortname=A john.a.com\B it need to redirect to http://whoisjohn.a.com/shortname=B john.a.com\C it need to redirect to http://whoisjohn.a.com/shortname=C

 

  • I played around and come up with this and meet my requirements

     

    when HTTP_REQUEST { if {[HTTP::host] contains "john" }

     

    { HTTP::redirect "http://whoisjohn.a.com/shortname=[substr [HTTP::uri] 1]"

     

    }

     

    }

     

    substr "1" command basically strips of the "/" on the client request

     

  • when HTTP_REQUEST { set Vuri [ string tolower [HTTP::uri]] set Vheader [string tolower [HTTP::host]]

        if { $Vheader equals "john.a.com" }
                {
                    switch $Vuri {
                            /a  { HTTP::redirect "http://whoisjohn.a.com/shortname=A" } 
                            /b  { HTTP::redirect "http://whoisjohn.a.com/shortname=B" } 
                            /c  { HTTP::redirect "http://whoisjohn.a.com/shortname=C" } 
                        }  
               }
    

    }

  • when HTTP_REQUEST { set Vuri [ string tolower [HTTP::uri]] set Vheader [string tolower [HTTP::host]]

        if { $Vheader equals "john.a.com" }
                {
                    switch $Vuri {
                            /a  { HTTP::redirect "http://whoisjohn.a.com/shortname=A" } 
                            /b  { HTTP::redirect "http://whoisjohn.a.com/shortname=B" } 
                            /c  { HTTP::redirect "http://whoisjohn.a.com/shortname=C" } 
                        }  
               }
    

    }

  • Untested:

    when HTTP_REQUEST {
    if { ([HTTP::host] eq "john.a.com") and ([string length [HTTP::uri]] < 3) } {
    set NEW_URI [string map {/ /shortname=} [HTTP::uri]] 
    HTTP::respond 301 Location "http://whois.[HTTP::host]$NEW_URI"
    }
    }
    
  • I played around and come up with this and meet my requirements

     

    when HTTP_REQUEST { if {[HTTP::host] contains "john" }

     

    { HTTP::redirect "http://whoisjohn.a.com/shortname=[substr [HTTP::uri] 1]"

     

    }

     

    }

     

    substr "1" command basically strips of the "/" on the client request