Forum Discussion

iRule's avatar
iRule
Icon for Cirrus rankCirrus
Dec 31, 2020
Solved

Multiple URIs redirect to single URL

Dear Community Experts,

 

I need multiple URIs to be redirected to single URL. Please share iRule that will accomplish this requirement.

Following three URIs need to be redirected to https://abcdef.com

1: "en/good/morning.aspx"

2: "en/good/evening.aspx"

3: "en/good/night.aspx"

 

I already have an iRule which successfully redirects one URI to single URL, which is shown below.

===============

when HTTP_REQUEST {

       if { [HTTP::uri] contains "en/good/morning.aspx"  } {

               HTTP::redirect "https://abcdef.com"

       }

}

==============

 

Instead of creating three iRules and assigning to virtual server I need one iRule to be created & assigned to virtual server.

 

Kind Regards

  • There are multiple ways to achieve it but would suggest you to add two more conditions in existing iRule.

    when HTTP_REQUEST { 
        if { ([HTTP::uri] contains "en/good/morning.aspx") || ([HTTP::uri] contains "en/good/evening.aspx") || ([HTTP::uri] contains "en/good/night.aspx") } {
            HTTP::redirect "https://abcdef.com"
        } 
    }

    Cheers...

7 Replies

  • There are multiple ways to achieve it but would suggest you to add two more conditions in existing iRule.

    when HTTP_REQUEST { 
        if { ([HTTP::uri] contains "en/good/morning.aspx") || ([HTTP::uri] contains "en/good/evening.aspx") || ([HTTP::uri] contains "en/good/night.aspx") } {
            HTTP::redirect "https://abcdef.com"
        } 
    }

    Cheers...

  • Just my two cents on this one: HTTP::redirect always sends an HTTP 302 (Temporary Redirect) status code. If you want to send a different status code (like HTTP 301 (Permanent Redirect)) should use HTTP::respond instead.

     

    If you use a 302 is used instead of a 301, search engines might continue to index the old URL, and disregard the new one as a duplicate. 

    • iRule's avatar
      iRule
      Icon for Cirrus rankCirrus

      Hi Daniel,

      Thank you for your input.

      If I follow your piece of advice then the iRule will be similar to bellow for any future iRule that I create?

       

      1. when HTTP_REQUEST {
      2. if { ([HTTP::uri] contains "en/good/morning.aspx") || ([HTTP::uri] contains "en/good/evening.aspx") || ([HTTP::uri] contains "en/good/night.aspx") } {
      3. HTTP::respond "https://abcdef.com"
      4. }
      5. }

       

  • There are multiple ways to achieve it but would suggest you to add two more conditions in existing iRule.

    when HTTP_REQUEST { 
        if { ([HTTP::uri] contains "en/good/morning.aspx") || ([HTTP::uri] contains "en/good/evening.aspx") || ([HTTP::uri] contains "en/good/night.aspx") } {
            HTTP::redirect "https://abcdef.com"
        } 
    }

    Cheers...