Forum Discussion
Redirecting Old Site to New Site Same Directory
I am new to irules and this seems straight forward but I cannot find the answer to this:
I have a site www.oldsite.com redirected to www.landingpage.com, and that works fine.
My issue is that anyone going to www.oldsite.com/directory needs to go to www.newsite.com/samedirectory(automatically). When I get the correct script can I add this to my existing script/irule?
Thanks for your help.
24 Replies
- rmangram07_1105
Nimbostratus
Also as I am testing if a user goes to http://ww.oldsite.com it redirects them https://landingpage.com but if they go to https://ww.oldsite.com they stay at oldsite.com. I need them to go to landingpage.com as well. - nitass
Employee
for http://www.oldsite.com/it it does not work i thought you want "/it/useradmin/*". if it is "/it/*", you can just change from "/it/useradmin/" to "/it/" in the irule.
if they go to https://ww.oldsite.com they stay at oldsite.com. I need them to go to landingpage.com as well. i understand you have 2 virtual servers; one is 80 and the other one is 443, haven't you? what irule do you apply to 443 virtual server?
e.g.[root@ve10:Active] config b virtual bar80 list virtual bar80 { snat automap pool foo destination 172.28.19.252:80 ip protocol 6 rules myrule profiles { http {} tcp {} } } [root@ve10:Active] config b virtual bar443 list virtual bar443 { snat automap pool foo destination 172.28.19.252:443 ip protocol 6 rules myrule profiles { clientssl { clientside } http {} tcp {} } } [root@ve10:Active] config b rule myrule list rule myrule { when HTTP_REQUEST { if { [string tolower [HTTP::host]] equals "oldsite.com" } { set uri [string tolower [HTTP::uri]] if { $uri equals "/" } { HTTP::respond 302 noserver Location "https://landingpage.com" } elseif { not ($uri starts_with "/it/") } { HTTP::respond 302 noserver Location "https://newsite.com[HTTP::uri]" } } } } http [root@ve10:Active] config curl -I http://172.28.19.252/ -H "Host: oldsite.com" HTTP/1.0 302 Found Location: https://landingpage.com Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -I http://172.28.19.252/something -H "Host: oldsite.com" HTTP/1.0 302 Found Location: https://newsite.com/something Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -I http://172.28.19.252/it/something -H "Host: oldsite.com" HTTP/1.1 404 Not Found Date: Thu, 08 Aug 2013 01:47:16 GMT Server: Apache/2.2.3 (CentOS) Content-Type: text/html; charset=iso-8859-1 https [root@ve10:Active] config curl -Ik https://172.28.19.252/ -H "Host: oldsite.com" HTTP/1.0 302 Found Location: https://landingpage.com Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -Ik https://172.28.19.252/something -H "Host: oldsite.com" HTTP/1.0 302 Found Location: https://newsite.com/something Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -Ik https://172.28.19.252/it/something -H "Host: oldsite.com" HTTP/1.1 404 Not Found Date: Thu, 08 Aug 2013 01:47:33 GMT Server: Apache/2.2.3 (CentOS) Content-Type: text/html; charset=iso-8859-1 - rmangram07_1105
Nimbostratus
The same Irule is applied for the 443 VS as well. - rmangram07_1105
Nimbostratus
Sorry Disregard that last statement - rmangram07_1105
Nimbostratus
Sorry Disregard that last statement, I did not have an I rule applied to it. I am testing this out the whole scenario now. - rmangram07_1105
Nimbostratus
Ok everything is working now except..
When I got to http://www.oldsite.com/it..it does not redirect to https://www.oldsite.com/it.
But it does work only with https://www.oldsite.com/it. So it stays at the old site. - nitass
Employee
can you try this please?
[root@ve10:Active] config b rule myrule list rule myrule { when HTTP_REQUEST { if { [string tolower [HTTP::host]] equals "oldsite.com" } { set uri [string tolower [HTTP::uri]] if { $uri equals "/" } { HTTP::respond 302 noserver Location "https://landingpage.com" } elseif { $uri starts_with "/it/" } { if { [TCP::local_port] == 80 } { HTTP::respond 302 noserver Location "https://oldsite.com[HTTP::uri]" } } else { HTTP::respond 302 noserver Location "https://newsite.com[HTTP::uri]" } } } } - rmangram07_1105
Nimbostratus
Still no go for http://www.oldsite.com/it.. goes to new site still.. Here is what I have...
when HTTP_REQUEST {
if { [string tolower [HTTP::host]] equals "oldsite.com" } {
set uri [string tolower [HTTP::uri]]
if { $uri equals "/" } {
HTTP::respond 301 Location "https://landingpage.com"
} elseif { ($uri starts_with "/it/") } {
if { [TCP::local_port] == 80 } {
HTTP::respond 302 no server Location "https://oldsite.com[HTTP::uri]"
}
} else {
HTTP::respond 302 noserver Location "https://newsite.com[HTTP::uri]"
}
}
} - nitass
Employee
Still no go for http://www.oldsite.com/it.. goes to new site still.. Here is what I have...oops i just notice it is www.oldsite.com (not oldsite.com). so, can you try this?
when HTTP_REQUEST {
if { [string tolower [HTTP::host]] ends_with "oldsite.com" } {
set uri [string tolower [HTTP::uri]]
if { $uri equals "/" } {
HTTP::respond 302 noserver Location "https://landingpage.com"
} elseif { $uri starts_with "/it/" } {
if { [TCP::local_port] == 80 } {
HTTP::respond 302 noserver Location "https://[HTTP::host][HTTP::uri]"
}
} else {
HTTP::respond 302 noserver Location "https://newsite.com[HTTP::uri]"
}
}
} - rmangram07_1105
Nimbostratus
After testing this it appears that we only need certain directories to stay at oldsite.com and everything else go to newsite http or https. Keep in mind that the root oldsite.com is redirecting to the landginpage.com still. That is working fine
when HTTP_REQUEST {
if { [string tolower [HTTP::host]] equals "oldsite.com" } {
set uri [string tolower [HTTP::uri]]
if { $uri equals "/" } {
HTTP::respond 301 Location "https://landingpage.com"
} elseif { ($uri starts_with "/directory/it/") Stays on old site
($uri starts_with "/directory/hr/") Stays on old site
($uri starts_with "/directory/finance/") Stays on old site } {
if { [TCP::local_port] == 80 } {
HTTP::respond 302 noserver Location "https://[HTTP::host][HTTP::uri]"
}
} else {
HTTP::respond 302 noserver Location "https://newsite.com[HTTP::uri]"
}
}
}
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