Permanente HTTP Weiterleitung durch eine iRule am F5 BigIP Loadbalancer

Frage:

epaper.thueringer-allgemeine.de ist mit einer temporären 302-Weiterleitung auf den Thüringen Kiosk versehen.

Hier sollte besser eine permanente 301-Weiterleitung eingerichtet sein.

Ein 301 entfernt die Seite, die ihn meldet aus dem Suchmaschinen Index und wird dort von der Ziel-Seite ersetzt.
Beim 302 bleibt die aufgerufene URL gültig und deswegen wird sie auch nicht aus dm Index gelöscht.
302 würde man z.B. beim Ausfall eines Servers für kurze Zeit nutzen.

Antwort :

Diese iRule führt zu einer 301 Weiterleitung:

"epaper.thueringer-allgemeine.de" {
HTTP::respond 301 Location "http://www.thueringen-kiosk.de"
}

Diese iRule führt zu einer 302 Weiterleitung:

"ial.mydnszone.de" {
HTTP::redirect "http://ialmag.mydnszone.de[HTTP::uri]"
}

Ergänzung auf der F5 Knowledgebase :
Redirects all traffic to same hostname, same URI over https by issuing a redirect with status 301 (Moved Permanently).

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.)

	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.

	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]"
	   }
	}