Forum Discussion
Jim_107778
Nimbostratus
Mar 02, 2009Best way to rewrite no redirect
All,
I've got an application that needs to re-write the url...not redirect. There is data being posted...so a redirect would lose the data.
So...
when HTTP_REQUEST {
if { [HTTP::uri] contains "/specificfile.asp/" } {
? - but not a redirect...
Any suggestions?
Thanks,
Jim
maco0720
5 Replies
- hoolio
Cirrostratus
Hi Jim,
You can use HTTP::uri (Click here) or HTTP::path (Click here) to rewrite the URI or path.
You can check the HTTP::path wiki page for a description of the difference between the two commands.
Aaron - Jim_107778
Nimbostratus
Aaron,
Thanks for the answer....unfortunately...I didn't explain myself well. So here's a better description.
I need to rewrite the entire url....based on the specific file in the URI.
So:
when HTTP_REQUEST {
if { [HTTP::uri] contains "/specificfile.asp/" } {
I need to change the url to one value as opposed to
if { [HTTP::uri] contains "/differentfile.asp/" } {
changes to a different url.
if
http://www.home.com/specificfile.asp send to http://www.away.com/whatever.asp
elseif
http://www.home.com/differentfile.asp sent to http://www.here.com/another.asp
So I've got to rewrite the incoming url to two totally different urls based on the file requested....but cannot redirect.
Thanks again,
Jim - Jim_107778
Nimbostratus
So am I asking a question that has been covered a lot and I should be searching better for the answer (can't seem to find anything that matches).....or is this not possible in everyone's opinion.
Thanks,
Jim
maco0720 - hoolio
Cirrostratus
Hi Jim,
I just missed your reply last week. If you want to check the host value, you can use HTTP::host (Click here). To rewrite the Host header value, you can use 'HTTP::header replace Host "newhost.example.com"' (Click here). To get/set the URI, you can use HTTP::uri (Click here).
So to rewrite the host and URI without the client seeing the change, you can use an iRule like this:when HTTP_REQUEST { log local0. "[IP::client_addr]:[TCP::client_port]: New request to [HTTP::host][HTTP::uri]" Check host/uri (set to lowercase) switch "[string tolower [HTTP::host][HTTP::uri]]" { "www.home.com/specificfile.asp" { Rewrite host/URI HTTP::header replace Host "www.here.com" HTTP::uri "/whatever.asp" log local0. "[IP::client_addr]:[TCP::client_port]: Rewrite host/uri (1)" } "www.home.com/differentfile.asp" { Rewrite host/URI HTTP::header replace Host "www.here.com" HTTP::uri "/another.asp" log local0. "[IP::client_addr]:[TCP::client_port]: Rewrite host/uri (2)" } } } Aaron - Jim_107778
Nimbostratus
Hoolio....That helped alot...thanks. I'm still working on it...but will post the end result when the testing is done.
Thanks again!!!!
Jim
Recent Discussions
Related Content
DevCentral Quicklinks
* 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
Discover DevCentral Connects