Forum Discussion
Capture part of URI and do not redirect.
- Jan 10, 2024
Thank you all for your help.
I write this irule and solve my problem.
when HTTP_REQUEST {
if { [HTTP::host] contains "example.com" }{
elseif { [HTTP::uri] starts_with "/abc" and not ([HTTP::uri] contains "abc-def") } {
HTTP::redirect /xyzThis is what happening.
example.com/abc -> redirecting to example.com/xyz
example.com/abc?=un -> redirecting to example.com/xyzexample.com/abc-def -> It stays as it is. This is my requirement.
example.com/abc-def?=un -> It stays as it is. This is okay for me now.I was looking if there is anyway example.com/abc-def?=un can also be redirected to example.com/abc-def by modifying the irule above.
I think you need to use (not starts_with) operator for your logic.
In the below code sample, if the request equals to "abc" or not starts with "abc-def", it will be redirected to /xyz.
Therefore,
"If the uri is /abc (and whatever parameters after /abc, eg: /abc?=un), it should redirct to /xyz
If the uri is /abc-def (and whatever parameters after /abc-def, eg: /abc-def?=un, it should stay on same URI /abc-def"
- /abc will be redirected to /xyz
- /abc?=un will be redirected to /xyz (because it is not starts with "abc-def"
- /abc-def will stay on same because it will not going into second if statement.
when HTTP_REQUEST {
if {[HTTP::host] eq "www.example.com"}{
if{(([HTTP::uri] eq "abc") or !([HTTP::uri] starts_with "abc-def")) }{
HTTP::redirect "www.example.com/xyz"
}
}
}
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