cancel
Showing results for 
Search instead for 
Did you mean: 
Login & Join the DevCentral Connects Group to watch the Recorded LiveStream (May 12) on Basic iControl Security - show notes included.

Problem this snippet solves:

Redirects all traffic to same hostname, same URI over https by issuing a redirect with status 301 (Moved Permanently). You can change the status code to a 302 to issue a non-cacheable redirect.

Apply to HTTP virtual server to redirect all traffic to same hostname (stripping port if it exists), same URI over HTTPS. (Do not apply to shared/wildcard virtual server responding to HTTPS traffic, or infinite redirect will occur. Create separate virtual servers on port 80 and port 443, and apply this iRule ONLY to the port 80 HTTP-only virtual server. No iRule is needed on the port 443 HTTPS virtual server.)

How to use this snippet:

when HTTP_REQUEST {
  HTTP::respond 301 Location "https://[getfield [HTTP::host] : 1][HTTP::uri]"
}

The above rule may be modified to function on a shared virtual server by testing TCP::local_port and redirecting only if the request came in over port 80:

when HTTP_REQUEST {
  if { [TCP::local_port] == 80 }{
    HTTP::respond 301 Location "https://[getfield [HTTP::host] : 1][HTTP::uri]"
  }
}

Here is another option which handles HTTP requests which don't have a Host header value. In such a case, the VIP's IP address is used for the host in the redirect.

Code :

when HTTP_REQUEST {

   # Check if Host header has a value
   if {[HTTP::host] ne ""}{

      # Redirect to the requested host and URI (minus the port if specified)
      HTTP::respond 301 Location "https://[getfield [HTTP::host] ":" 1][HTTP::uri]"

   } else {

      # Redirect to VIP's IP address
      HTTP::respond 301 Location "https://[IP::local_addr][HTTP::uri]"
   }
}
Comments
Deepu2017
Altostratus
Altostratus

Can this be done using LTM policy instead of irule?

 

bhanu_376522
Nimbostratus
Nimbostratus

Thankyou this worked like a charm. SEO requirement want to make this a 301 permanent redirect and not a 302,

 

RonaldRojas
Nimbostratus
Nimbostratus

Based from my test there is only one option that you can do using policy which is a 302 redirect.

Version history
Last update:
‎18-Mar-2015 11:52
Updated by:
Contributors