Forum Discussion

Hien_Truong's avatar
May 05, 2021

irule redirect all except some path.

Hi,

i need to redirect all wildcard uri except some uri. The below irule is working with wildcard (else condition) but not working with others (if and elseif) condition. Please help to fix this issue. i appreciate it.

 

When HTTP_REQUEST {

if { ( [HTTP::host] eq "www.default.com") && ([HTTP::uri] starts_with "/abc/def")}

{ HTTP::respond "https://www.default.com/abc/def" }

elseif

{ ( [HTTP::host] eq "www.default.com") && ([HTTP::uri] starts_with "/xyz/w")}

{ HTTP::respond "https://www.default.com/xyz/w" }

else

{ HTTP::respond 301 Location "https://otherdomain.com/redirect_legacy[HTTP::uri]"

  • Hi Hien Truong,

    when HTTP_REQUEST {
    	if { [HTTP::host] equals "www.default.com" && not ([HTTP::uri] starts_with "/abc/def" || [HTTP::uri] starts_with "/xyz/w") } {
    		HTTP::respond 301 Location "https://otherdomain.com/redirect_legacy[HTTP::uri]"
    		return
    	}
    }
  • Hi Hien Truong,

    when HTTP_REQUEST {
    	if { [HTTP::host] equals "www.default.com" && not ([HTTP::uri] starts_with "/abc/def" || [HTTP::uri] starts_with "/xyz/w") } {
    		HTTP::respond 301 Location "https://otherdomain.com/redirect_legacy[HTTP::uri]"
    		return
    	}
    }