Forum Discussion
HELP - Wildcard URI Redirect
I'm new to iRules. And I'm trying to create what should be a simple iRule. I would like to redirect traffic from
http://www.domain1.com/products/new/*
to
http://www.domain1.com/custom/new-items/*
So far, here's what I have
when HTTP_REQUEST { if {[string tolower [HTTP::uri]] starts_with "products/new/"} {HTTP::respond 301 Location "http://www.domain1.com/custom/new-items/*"}
thanks for the help. I'm sure it's just something simple that I'm missing.
11 Replies
- ekaleido_26616
Cirrocumulus
HTTP::uri ALWAYS starts with / so your code should read:
if {[string tolower [HTTP::uri]] starts_with "/products/new/"- ekaleido_26616
Cirrocumulus
Also, if you just want to replicate whatever comes after new/ you are not going to get away with just doing a redirect. You're going to have to capture everything after new/ to a variable to insert in the redirect.
- Will_Caetano_97
Nimbostratus
Thank you for the feedback. Would you have any example on how to capture everything after new/. Sorry I'm really new to iRules.
- ekaleido_26616
Cirrocumulus
I was afraid you'd ask. My TCL-fu sucks but this might be one way... 🙂
set firstUri [HTTP::uri] set newUri [split $firstUri "/"] foreach field $newUri { lassign $newUri field1 field2 field3 fieldHOWEVERMANYFIELDSYOUHAVE }Then in the redirect instead of /* it would be /$field1/$field2 etc, etc.
Like I said, my TCL-fu stinks, but someone will probably provide a more efficient answer.
- ekaleido
Cirrus
HTTP::uri ALWAYS starts with / so your code should read:
if {[string tolower [HTTP::uri]] starts_with "/products/new/"- ekaleido
Cirrus
Also, if you just want to replicate whatever comes after new/ you are not going to get away with just doing a redirect. You're going to have to capture everything after new/ to a variable to insert in the redirect.
- Will_Caetano_97
Nimbostratus
Thank you for the feedback. Would you have any example on how to capture everything after new/. Sorry I'm really new to iRules.
- ekaleido
Cirrus
I was afraid you'd ask. My TCL-fu sucks but this might be one way... 🙂
set firstUri [HTTP::uri] set newUri [split $firstUri "/"] foreach field $newUri { lassign $newUri field1 field2 field3 fieldHOWEVERMANYFIELDSYOUHAVE }Then in the redirect instead of /* it would be /$field1/$field2 etc, etc.
Like I said, my TCL-fu stinks, but someone will probably provide a more efficient answer.
- Stanislas_Piro2
Cumulonimbus
Hi,
you an try this irule :
when HTTP_REQUEST { if {[string tolower [HTTP::uri]] starts_with "/products/new/"} { set newuri [string map "/products/new/ /custom/new-items/" [HTTP::uri]] HTTP::respond 301 Location "http://www.domain1.com$newuri" }
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