Forum Discussion
HTTP redirect when Path is / and host is not FQDN
I wrote a simple irule to do HTTP redirect:
when HTTP_REQUEST {
if { !([string tolower [HTTP::host]] ends_with "mycompany.com") } { append [HTTP::host] "mycompany.com" }
if { [HTTP::path] eq "/" or [HTTP::path] eq "" } {
HTTP::redirect "http://application.mycompany.com/ABC"
}
}
I expect my iRule to redirect:
http://application/ or http://application.mycompany.com/
to
http://application.mycompany.com/ABC
But it is not the case, the iRule is not doing anything when host is not FQDN and it seems the condition evaluation doesn't work for empty path (/)
- cjunior
Nacreous
Hi,
There are some possibilities to get this working.
e.g.
when HTTP_REQUEST { set host [getfield [HTTP::host] : 1] if { not ( [string tolower $host] ends_with "mycompany.com" ) } { append host ".mycompany.com" if { [HTTP::path] ne "/" } { HTTP::redirect "http://$host[HTTP::uri]" } } if { [HTTP::path] eq "/" } { HTTP::redirect "http://$host/ABC" } }
Test #1:
# curl-apd -v --resolve application:80:172.30.30.100 http://application
* Added application:80:172.30.30.100 to DNS cache
* Rebuilt URL to: http://application/
* Hostname application was found in DNS cache
* Trying 172.30.30.100...
* Connected to application (172.30.30.100) port 80 (#0)
> GET / HTTP/1.1
> Host: application
> User-Agent: curl/7.47.1
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Moved Temporarily
< Location: http://application.mycompany.com/ABC
< Server: FRONTEND
* HTTP/1.0 connection set to keep alive!
< Connection: Keep-Alive
< Content-Length: 0
<
* Connection #0 to host application left intact
Test #2:
# curl-apd -v --resolve application:80:172.30.30.100 http://application/mypath
* Added application:80:172.30.30.100 to DNS cache
* Hostname application was found in DNS cache
* Trying 172.30.30.100...
* Connected to application (172.30.30.100) port 80 (#0)
> GET /mypath HTTP/1.1
> Host: application
> User-Agent: curl/7.47.1
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Moved Temporarily
< Location: http://application.mycompany.com/mypath
< Server: FRONTEND
* HTTP/1.0 connection set to keep alive!
< Connection: Keep-Alive
< Content-Length: 0
<
* Connection #0 to host application left intact
Test #3:
# curl-apd -v --resolve application.mycompany.com:80:172.30.30.100 http://application.mycompany.com
* Added application.mycompany.com:80:172.30.30.100 to DNS cache
* Rebuilt URL to: http://application.mycompany.com/
* Hostname application.mycompany.com was found in DNS cache
* Trying 172.30.30.100...
* Connected to application.mycompany.com (172.30.30.100) port 80 (#0)
> GET / HTTP/1.1
> Host: application.mycompany.com
> User-Agent: curl/7.47.1
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Moved Temporarily
< Location: http://application.mycompany.com/ABC
< Server: FRONTEND
* HTTP/1.0 connection set to keep alive!
< Connection: Keep-Alive
< Content-Length: 0
<
* Connection #0 to host application.mycompany.com left intact
I hope it helps.
Regards
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com