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

NathPras's avatar
NathPras
Icon for Cirrus rankCirrus
Sep 22, 2022
Solved

URL/URI rewrite without changing in Client browser

Hello All Experts, Greetings!   I have an issue where I need to rewrite URL and as well as URIs from https://abc.com/xyz to https://pqr.com/mnp. I found two ways to do that one I can use a profil...
  • Kevin_Stewart's avatar
    Kevin_Stewart
    Oct 06, 2022

    I'd maybe argue that partitions aren't create separate logical BIG-IPs. It's more about building separate administrative domains on a single BIG-IP. Further, partitions can always access the /Common partition. To answer your question though, it depends on the level of isolation, but you should simply be able to point to the VIP in the oter partition,

    virtual "/abc-app-dev/np-api-vip"
    
    or 
    
    virtual "/Common/abc-app-dev/np-api-vip"

    You don't need SNAT to communicate between VIPs on the same BIG-IP.

  • NathPras's avatar
    NathPras
    Dec 08, 2022

    Hi Kevin,

    Thanks for your guidance. Here is what I figured out and it is working now. All happened due to your idea so thanks again.

     

    IRule for same routing domain :-

     

    when HTTP_REQUEST {
    log local0. "Incoming request: [HTTP::host]:[HTTP::uri]"
    if { [set match [class match -value -- "[HTTP::host]:[HTTP::uri]" starts_with datagroup_Name]] ne "" } {
    log local0. "Datagroup match: $match"
    ## Get first URI path in client request
    set FIRSTPATH [getfield [HTTP::path] "/" 2]

    ## Split match into host and path
    set matchlist [split $match ":"]
    set MATCHHOST [lindex $matchlist 0]
    set MATCHPATH [lindex $matchlist 1]

    ## Replace FIRSTPATH with MATCHPATH (from full HTTP::uri)
    set UPDATEDPATH [string map [list "/$FIRSTPATH" "$MATCHPATH"] [HTTP::uri]]
    log local0. "Updated host: $MATCHHOST"
    log local0. "Updated path: $UPDATEDPATH"

    HTTP::host $MATCHHOST
    HTTP::uri $UPDATEDPATH

    virtual "/path/virtual_server_name"


    }
    }

     

    For different route domain 

     

    when HTTP_REQUEST {
    log local0. "Incoming request: [HTTP::host]:[HTTP::uri]"
    if { [set match [class match -value -- "[HTTP::host]:[HTTP::uri]" starts_with datagroup_name]] ne "" } {
    log local0. "Datagroup match: $match"
    ## Get first URI path in client request
    set FIRSTPATH [getfield [HTTP::path] "/" 2]

    ## Split match into host and path
    set matchlist [split $match ":"]
    set MATCHHOST [lindex $matchlist 0]
    set MATCHPATH [lindex $matchlist 1]

    ## Replace FIRSTPATH with MATCHPATH (from full HTTP::uri)
    set UPDATEDPATH [string map [list "/$FIRSTPATH" "$MATCHPATH"] [HTTP::uri]]
    log local0. "Updated host: $MATCHHOST"
    log local0. "Updated path: $UPDATEDPATH"

    HTTP::host $MATCHHOST
    HTTP::uri $UPDATEDPATH

    pool pool_name


    }
    }