Forum Discussion
Simple iRule for URL appending?
21 Replies
- Arie
Altostratus
Did the request contain a query string? - nitass
Employee
Banyan,[root@iris:Active] css b virtual bar list bvirtual bar { snat automap pool foo destination 172.28.17.33:http ip protocol tcp rules myrule profiles { http {} tcp {} } } [root@iris:Active] css b rule myrule list rule myrule { when HTTP_REQUEST { set val [HTTP::uri] log local0. "\[HTTP::uri\] is $val" log local0. "\[string length $val\] is [string length $val]" if { ([string length $val] == 0) or ([string length $val] == 1)} { HTTP::redirect https://[HTTP::host]/apath } } } [root@iris:Active] css curl -I http://172.28.17.33/ HTTP/1.0 302 Found Location: https://172.28.17.33/apath Server: BigIP Connection: Keep-Alive Content-Length: 0 [root@iris:Active] css cat /var/log/ltm Nov 2 20:38:32 local/tmm info tmm[1609]: Rule myrule : [HTTP::uri] is / Nov 2 20:38:32 local/tmm info tmm[1609]: Rule myrule : [string length /] is 1 - Sanjit_126167
Nimbostratus
I have box in pool member node on http://xyz.com/test. I want to irule hide internal /test and redirect to only http://xyz.com. Please help me - Sanjit_126167
Nimbostratus
I have box in pool member node on http://xyz.com/test. I want to irule hide internal /test and redirect to only http://xyz.com. Please help me - Kevin_Stewart
Employee
There are a few considerations to your request:
1. If you JUST want to hide the /test URI from the client, you can use the HTTP::uri command to transparently change the URI in the HTTP request.when HTTP_REQUEST { HTTP::uri "/test[HTTP::uri]" }
This is a rather brute force way of changing the incoming URI to "/test" plus whatever is already in the client's request.
Ex. client requests "/foo" and the server sees "/test/foo"
2. The problem with the above approach is that it doesn't account for what information the server may send back to the client in the form of object references. If that is a concern, then there are a few options, but I'd recommend an iRule-based stream expression to replace "/test" references in the response payload. The wiki page for streams has some pretty good examples that modify content in the HTTP_RESPONSE event.
3. The problem with the above is that it doesn't account for complex applications. Your example only shows one URI, but if that's just for illustration purposes and your environment is much more complicated than that, then I'd recommend a ProxyPass solution. The ProxyPass iRule will do exactly what you require but can handle much more complex requirements. If that's an option, do a quick search on this site for "ProxyPass". Hi please help for Https request, what changes be there in this irule--
when HTTP_REQUEST { if { [HTTP::path] equals "/" } { HTTP::redirect "/somewhere/else.html" } }
for http request its working fine, but for https its not aking this irule...i changes http to https everywhere in irule...
- Thomas_Gobet_91
Cirrostratus
Hi,
With https you don't need to change anything on this iRule.
You have to apply your server-ssl profile and that's all (you may need a client-ssl profile too).- Thanks very much Thomas Gobet....:)
- Thomas_Gobet
Nimbostratus
Hi,
With https you don't need to change anything on this iRule.
You have to apply your server-ssl profile and that's all (you may need a client-ssl profile too).- Thanks very much Thomas Gobet....:)
- Arie
Altostratus
@Arun, assuming that you're using separate VIPs for HTTP and HTTPS, can you confirm that the iRule has been assigned to both VIPs?
The rule as you included it above should not require any adjustments for HTTPS.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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
