Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner

Multiple http_request iRules not working Same Virtual server

Yesh1923
Nimbostratus
Nimbostratus

 

how to merge this 2 irule

when HTTP_REQUEST {

if { ([string tolower [HTTP::host]] equals "energy.com")

HTTP::respond 301 location "https://www.[HTTP::host][HTTP::uri]" Connection Close
}
}

 

 

when HTTP_REQUEST {

if { ([string tolower [HTTP::host]] equals "corporate.ndtv.com")} {
HTTP::respond 301 location "https://www.ndtv.com" Connection Close
}
}

 

 

13 REPLIES 13

Hi iyyappan321,

when HTTP_REQUEST {
	if { [string tolower [HTTP::host]] equals "energy.com" } {
		HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
		return
	} elseif { [string tolower [HTTP::host]] equals "corporate.ndtv.com" } {
		HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
		return
	}
}

switch version

when HTTP_REQUEST {
	switch [string tolower [HTTP::host]] {
		"energy.com" {
			HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
			return
		}
		"corporate.ndtv.com" {
			HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
			return
		}
	}
}

 

 

when HTTP_REQUEST {

if { ([string tolower [HTTP::host]] equals "energy.com")

HTTP::respond 301 location "https://www.[HTTP::host][HTTP::uri]" Connection Close
}
}

when HTTP_REQUEST {

if { ([string tolower [HTTP::host]] equals "corporate.ndtv.com")} {
HTTP::respond 301 location "https://www.ndtv.com" Connection Close
}
}

 

when HTTP_REQUEST {
switch [string tolower [HTTP::host]] {
"exxonmobil.eu" {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return
}
"corporate.exxonmobil.com.qa" {
HTTP::respond 301 Location "https://www.exxonmobil.com.qa" "Connection" "Close"
return
}
}
}


when HTTP_REQUEST {
if { [string tolower [HTTP::host]] equals "energy.com" } {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return
} elseif { [string tolower [HTTP::host]] equals "corporate.ndtv.com" } {
HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
return
}
}

 

 

much appreciate your response 

one more info need - syntax for add more url 

how to add these website as well -- goodenergy.com,  oddenergy.com  etc ... in below 

 

when HTTP_REQUEST {

if { [string tolower [HTTP::host]] equals "energy.com" } {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return

&

 


when HTTP_REQUEST {
switch [string tolower [HTTP::host]] {
"energy.com" {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return

 

>>>>>>>>>>>>

how add multi sites in below syntax


marketing.ndtv.com" as well

 

"corporate.ndtv.com" {
HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
return

 

when HTTP_REQUEST {
	switch [string tolower [HTTP::host]] {
		"energy.com" -
		"goodenergy.com" -
		"oddenergy.com" {
			HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
			return
		}
		"corporate.ndtv.com" -
		"marketing.ndtv.com" {
			HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
			return
		}
	}
}

You can review the article at the link for switch command usage.

https://clouddocs.f5.com/api/irules/switch.html

hi enes

i will test this rule will come back if faced any issue

thanks agian for your support  !!!!!!

Hooni_L
Cirrus
Cirrus

Hi 

If you share one more method, you can also leverage datagroup.

 

when HTTP_REQUEST {
	if { class match [string tolower [HTTP::host]] equals DATAGROUP-NAME } {
		HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
		return
	} elseif { class match [string tolower [HTTP::host]] equals DATAGROUP-NAME  } {
		HTTP::respond 301 Location "https://www.ndtv.com" "Connection" "Close"
		return
	}
}

 

DATAGROUP-NAME Include

Type String

String : 

energy.com
goodenergy.com
oddenergy.com

Yesh1923
Nimbostratus
Nimbostratus

hi nimbos

how to merge these http_request , could you please help 

when HTTP_REQUEST {
if {([HTTP::header values "True-Client-IP"] equals "203.82.36.24") or ([HTTP::header values "True-Client-IP"] equals "11.50.154.146")
or ([HTTP::header values "True-Client-IP"] equals "180.91.158.114") or ([HTTP::header values "True-Client-IP"] equals "180.131.18.113")
or ([HTTP::header values "True-Client-IP"] equals "103.11.158.98") or ([HTTP::header values "True-Client-IP"] equals "11.54.23.2") or ([HTTP::header values "True-Client-IP"] equals "91.218.114.26") or
([HTTP::header values "True-Client-IP"] equals "91.28.11.4") or ([HTTP::header values "True-Client-IP"] equals "92.63.8.47") or
}{
HTTP::respond 400 content "site currently unavailable, Please try again later"
}
}

 

********************************************


when HTTP_REQUEST {
if { [string tolower [HTTP::host]] equals "energy.com" } {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return
}
elseif { [string tolower [HTTP::host]] equals "ndtv.com" } {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return
}
elseif { [string tolower [HTTP::host]] equals "corporate.ndtv.com" } {
HTTP::respond 301 Location "https://www.ndtv.co" "Connection" "Close"
return

}
}

 

 

 

 

 

 

 

 

or can we have two working irule ,one for http_request another irule for block external ips 

@Yesh1923 

I think use date-group list and 'IF' on irule.

I couldn't test it, but I checked that it was set up in the equipment.

refer below irule and datagroup list:

스크린샷 2023-01-19 오후 1.31.24.png스크린샷 2023-01-19 오후 1.31.17.png

 

when HTTP_REQUEST {
    if { [class match [HTTP::header values "True-Client-IP"] eq dg-client-ip]  } {
        HTTP::respond 400 content "site currently unavailable, Please try again later"
    } elseif { [class match [HTTP::host] eq dg-domain] } {
        HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
        return
    }
}

 

 

 

i add below but its not working as expected , web page not loading 

when HTTP_REQUEST {
if { [class match [HTTP::header values "True-Client-IP"] eq mo-client-ip] } {
HTTP::respond 400 content "site currently unavailable, Please try again later"
} elseif { [class match [HTTP::host] eq mo-domain] } {
HTTP::respond 301 Location "https://www.[HTTP::host][HTTP::uri]" "Connection" "Close"
return
}
}

iyyappan321_0-1674225977444.png

 

@Yesh1923 

Hi 

I'm on vacation, so I'm sorry for the late reply.

Can you check the ltm log message when after http requset?

thanks

Yesh1923
Nimbostratus
Nimbostratus

how to merge these 2 irule in single irule 

 

when HTTP_REQUEST {

 if { ([string tolower [HTTP::host]] equals "essar.com") && (([string tolower [HTTP::path]] eq "/en")

or ([string tolower [HTTP::path]] eq "/en/")) }

{

    HTTP::respond 301 location "https://essar.com/en-gb/"

elseif { ([string tolower [HTTP::host]] equals "essar.com") && ([string tolower [HTTP::path]] contains "/wholesale-fuels") }

{

    HTTP::respond 301 location "https://www.essar.com/wholesale-fuels" "Connection" "Close"

  }

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

when HTTP_REQUEST {

       

HTTP::respond 301 "Location" "https://[getfield [HTTP::host] ":" 1][HTTP::uri]" TCP::close

 

  }

 

Hi iyyappan321,

when HTTP_REQUEST {
	if { ([string tolower [HTTP::host]] equals "essar.com") && (([string tolower [HTTP::path]] eq "/en") or ([string tolower [HTTP::path]] eq "/en/")) } {
		HTTP::respond 301 Location "https://essar.com/en-gb/"
		return
	} elseif { ([string tolower [HTTP::host]] equals "essar.com") && ([string tolower [HTTP::path]] contains "/wholesale-fuels") } {
		HTTP::respond 301 Location "https://www.essar.com/wholesale-fuels" "Connection" "Close"
		return
	}
	else {
		HTTP::respond 301 Location "https://[getfield [HTTP::host] ":" 1][HTTP::uri]"
		TCP::close
	}
}

You need to use this iRule in non 443 virtual server. Otherwise, redirect loop occurs. 

hi enes thanks for your response 

i used below rule , but i can able to access only - energy.com site , if i access essar.com its not getting redirect to "https://corporate.essar.com/fr-fr"

my requirement is i want to access both - energy.com , if i access  essar.com -- have to redirect to "https://corporate.essar.com/fr-fr"

please help 

when HTTP_REQUEST {

if { ([string tolower [HTTP::host]] equals "essar.co.uk") && (([string tolower [HTTP::path]] eq "/en") or ([string tolower [HTTP::path]] eq "/en/")) } {
HTTP::respond 301 location "https://wholesalefuels.essar.co.uk/en-gb/"
}

elseif { ([string tolower [HTTP::host]] equals "energy.com") } {
HTTP::respond 301 location "https://www.energy.com" Connection Close
}
elseif { ([string tolower [HTTP::host]] equals "essar.com") && ([string tolower [HTTP::path]] contains "fr-fr/wholesale-fuels") } {
HTTP::respond 301 location "https://www.essar.com/fr-FR/wholesale-fuels"
}
elseif { ([string tolower [HTTP::host]] equals "www.essar.com") && ([HTTP::path] eq "/") } {
HTTP::respond 301 location "https://corporate.essar.com/fr-fr"
}
      else  {
HTTP::respond 301 "Location" "https://[getfield [HTTP::host] ":" 1][HTTP::uri]"
}