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

nkroon1's avatar
nkroon1
Icon for Cirrus rankCirrus
Apr 22, 2020
Solved

iRule Help - if specific URL, redirect, else display a maintenance page

Hello! I currently have a working maintenance page, however the customer wants it if you go to a specific URL, you get redirected, else you get the page.

Currently, I have been doing redirects for a bunch of URL's in the following way...

when HTTP_REQUEST {
	set httppath [string tolower [HTTP::host][HTTP::uri]]
	switch -glob $httppath {
		"*example.com*" {
			HTTP::redirect https://[string map {"example" "example.new.com"} $httppath] }
} 
}
}

That irule has been working and have no issues. However, now we are trying to introduce a maintenance page. They want it to be where if you go to a specific site, you redirect, else everything hits the page. I've tried adding the following, but get syntax errors...

when HTTP_REQUEST {
	if {set httppath [string tolower [HTTP::host][HTTP::uri]]
	switch -glob $httppath {
		"*example.com*" {
			HTTP::redirect https://[string map {"example" "example.new.com"} $httppath] }
else {
  {HTTP::respond 200 content [ifile get "page.html"] }

  }
  }

I've tried a few other iterations, however i'm stumped at this point and looking for help.

  • when HTTP_REQUEST {
        switch -glob -- [string tolower [HTTP::host][HTTP::uri]] {
            "*example.com*" { HTTP::redirect https://example.new.com[HTTP::uri] }
             default { HTTP::respond 200 content [ifile get "page.html"] }
          }
      }

4 Replies