Forum Discussion
Bob_10976
Nimbostratus
May 12, 2008iRule re-write to replace ISAPI re-write
Hello all...
We are currently using ISAPI re-write in our portal to re-write uri's to the appropriate location. With the help of this forum I came up with the following, which works fine for /Portal/Category/
when HTTP_REQUEST {
if { [HTTP::uri] starts_with "/Portal/Category/" } {
HTTP::uri "/g2p/KII.G2P.Portal.Web.Pages/Category.aspx?id=[substr [HTTP::uri] 17 "\/"] "
}
}
But my issue is that I have a hundreds of entries in my ISAPI file and not all of them are /portal/category/ some do have the /portal/"somthing differnet", some have a different somthing/something. Obviously I don’t want to create hundreds of iRules or an iRule that has hundreds of “if then else” statements. Does anyone have any other suggestion or thoughts.
Below is a small example of some of the rewrites in my ISAPI file:
RewriteCond Host: test.mysite.com
RewriteRule /Portal/Search\.aspx(.*) /g2p/file.G2P.Portal.Web.Pages.Google/Search.aspx$1 [I]
RewriteCond Host: test.mysite.com
RewriteRule /Portal/SearchProxy\.aspx(.*) /g2p/file.G2P.Portal.Web.Pages.Google/SearchProxy.aspx$1 [I]
RewriteCond Host: test.mysite.com
RewriteRule /Portal/etc/(.*) /g2p/file.G2P.Portal.Web.Pages.Google/etc/$1 [I]
RewriteCond Host: test.mysite.com
RewriteRule /Portal/ExternalLink\.aspx(.*) /g2p/KII.G2P.Portal.Web.Pages/ExternalLink.aspx$1 [I]
RewriteCond Host: www\.test\.mayor\.state\.com
RewriteHeader Host: .* mayor\.state\.com
RewriteCond Host: test\.mayor\.state\.com
RewriteHeader Host: .* mayor\.state\.com
RewriteCond Host: cms\.test\.state\.mayor\.com
RewriteHeader Host: .* mayor\.state\.com
RewriteCond Host: test\.agency\.state\.com
RewriteHeader Host: .* agency\.state\.com
RewriteCond Host: www\.test\.agency\.state\.com
RewriteHeader Host: .* agency\.state\.com
RewriteCond Host: test\.cms\.agency\.state\.com
RewriteHeader Host: .* agency\.state\.com
RewriteCond Host: test\.another_agency\.state\.com
RewriteHeader Host: .* commerce\.state\.com
RewriteCond Host: www\.test\.another_agency \.state\.com
RewriteHeader Host: .* another_agency\.state\.com
RewriteCond Host: cms\.test\.another_agency \.state\.com
RewriteHeader Host: .* another_agency\.state\.com
Thanks in advance…
Bob
14 Replies
- Xin_99652
Nimbostratus
Hi Joe,
We have more than one sites share the same IP. for the site level monitoring, I use one VS with the iRules, check the site header to different pool.
the question: Does F5 know where is www.mycompany.com? since mycompany.com and www.mycompany.com are all inside of the network. they are using internal IP.
We add the dns record in the local hosts file to let server know where is the site, how about F5?
many thanks,
Xin - hoolio
Cirrostratus
Hi Xin,
Can you elaborate on your question? LTM typically doesn't deal with DNS resolution. If the hostnames resolve to the VIP address (or an IP address which is NAT'd to the VIP address), the request will get to LTM. LTM won't do hostname to IP address resolution unless you specifically configure this using NAME:: commands in an iRule (Click here).
You're specifying where to send requests based on the Host header value in the client request. So you're controlling where the request is sent based on the requested hostname. This is independent of DNS name resolution.
Aaron - Xin_99652
Nimbostratus
Hi Joe/Aaron,
I tired Joe's code and it doesn't work this time. btw, I have used Joe's other code before and it works fine.
What we need it is, there is a web site has two URLs, one with www, and one without www. such as www.mycompany.com and mycompany.com or www.xin.com and xin.com. The web site is working with both URLs. We have asked for any user doesn't matter he use which URL, it should always return the URL with www included the bookmarks he made without www. There are more than one way to do it, I am trying to use the iRules. Can I modify HTTP::host? if we can modify it, all we need is to check the HTTP::host and adding the www if it has no www. Or we can not do this way, we have to redirect the request back to the user with www.
From Joe's code, redirect to "http://www.mycompany.com[HTTP::uri]", can this request sent to any pool in LTM?
do you mean this?
when HTTP_REQUEST {
switch [string tolower [HTTP::host]] {
"www.mycompany.com" {
pool pl_www_mycompany_com
}
"mycompany.com" {
HTTP::redirect "http://www.mycompany.com[HTTP::uri]"
pool pl_www_mycompany_com
}
default {
reject
}
}
}
thanks,
Xin - Xin_99652
Nimbostratus
hi Joe,
Your code works, just get what I need. thank you very much. I was using the iRules incorrectly before..
Xin
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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
