Forum Discussion

Lakshmi_Sagar_S's avatar
Lakshmi_Sagar_S
Icon for Nimbostratus rankNimbostratus
Mar 02, 2015

How to create an irule for below mentioned requirement

  • You could do something like this:

    when HTTP_REQUEST {
        switch [string tolower [HTTP::host]] {
            "mydomain.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/mydomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "abc.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/abc/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "def.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/def/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "testing.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/testing/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
        }
    }
    

    or like this depending on how dynamic you'd like your iRule to be.

    when HTTP_REQUEST {
        if { not ([HTTP::host] equals "testdomain.com") } {
            set myDomain [getfield [HTTP::host] "." 1]
            HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/$myDomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
        }
    }
    
  • You could do something like this:

    when HTTP_REQUEST {
        switch [string tolower [HTTP::host]] {
            "mydomain.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/mydomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "abc.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/abc/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "def.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/def/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "testing.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/testing/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
        }
    }
    

    or like this depending on how dynamic you'd like your iRule to be.

    when HTTP_REQUEST {
        if { not ([HTTP::host] equals "testdomain.com") } {
            set myDomain [getfield [HTTP::host] "." 1]
            HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/$myDomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
        }
    }
    
    • Brad_Parker_139's avatar
      Brad_Parker_139
      Icon for Nacreous rankNacreous
      I would make the second rule like this to add the string tolower: when HTTP_REQUEST { if { not ([string tolower [HTTP::host]] equals "testdomain.com") } { set myDomain [getfield [HTTP::host] "." 1] HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/$myDomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n" } }
  • You could do something like this:

    when HTTP_REQUEST {
        switch [string tolower [HTTP::host]] {
            "mydomain.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/mydomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "abc.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/abc/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "def.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/def/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
            "testing.testdomain.com" {
                HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/testing/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
            }
        }
    }
    

    or like this depending on how dynamic you'd like your iRule to be.

    when HTTP_REQUEST {
        if { not ([HTTP::host] equals "testdomain.com") } {
            set myDomain [getfield [HTTP::host] "." 1]
            HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/$myDomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
        }
    }
    
    • Brad_Parker's avatar
      Brad_Parker
      Icon for Cirrus rankCirrus
      I would make the second rule like this to add the string tolower: when HTTP_REQUEST { if { not ([string tolower [HTTP::host]] equals "testdomain.com") } { set myDomain [getfield [HTTP::host] "." 1] HTTP::respond "HTTP/1.1 301 Moved Permanently\r\nLocation:http://testdomain.com/$myDomain/\r\nConnection: close\r\nContent-Length: 0\r\n\r\n" } }