Forum Discussion
URL Rewrite
we need to rewrite the incoming request to a different endpoint and add some additional parameters to the URL.
The purpose of doing this is we don't want to expose the endpoint URL and the URL parameters to the browser. Below is an example:
incoming URL:
https://example.com/rec/widgets/item/McBq3g?=,&_br_uid_2=uid=59512300:v
1. Copy the url content from the incoming url after /widgets and add it to the rewrite url https://sample.com/api/v2/widgets/
2. append 2 additional url parameters &account_id=5036&domain_key=example at the end.
Final URL should look like this:
https://sample.com/api/v2/widgets/item/McBq3g?=,&_br_uid_2=uid=59512300:v&account_id=5036&domain_key=example
Please note the URL content after /widgets will change based on type of request but the logic of rewriting should be same. that is to copy everything after /widgets and append additional url parameters.
Assuming all incoming url starts_with /rec/widgets, you can try below code
when HTTP_REQUEST { if { [string tolower [HTTP::uri]] starts_with "/rec/widgets" } { HTTP::header replace "Host" "sample.com" set new_uri "/api/v2/widgets[string range [HTTP::uri] 12 end]&account_id=5036&domain_key=example" log local0. "new_uri: $new_uri" HTTP::uri $new_uri return } }
- spalandeNacreous
Assuming all incoming url starts_with /rec/widgets, you can try below code
when HTTP_REQUEST { if { [string tolower [HTTP::uri]] starts_with "/rec/widgets" } { HTTP::header replace "Host" "sample.com" set new_uri "/api/v2/widgets[string range [HTTP::uri] 12 end]&account_id=5036&domain_key=example" log local0. "new_uri: $new_uri" HTTP::uri $new_uri return } }
- MohanKAltostratus
Hey Sanjay,
Thanks for the quick reply!
Does the replacement host "sample.com" have to be in the same LTM? In our case, it's an external address.
Regards,
Mohan Kumar
- spalandeNacreous
It can be hosted any where. You would need to modify the iRule above to create a pool for "sample.com" and use it with pool command before return statement.
Make sure pool is reachable from the LTM.
- MohanKAltostratus
Sanjay,
The iRule is doing his job, by re-writing exactly, how we wanted. However, the page is not loading automatically (or using the incoming URL). When we try manually with a new URL (Enabled log, so I was able to get the new URI) in the browser it is loading. The pool is also reachable from LTM.
- spalandeNacreous
you would need to capture tcpdump, enable logging in iRule to capture request and response and also review devolper tool logs from the browser to see what's happening.
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