Have you looked at the logs? If typing in the https:// is working but using your redirect is not, then there are a couple of options:
1. Your HTTP::redirect is not using the correct string.
I'd add some logging in the first iRule to make sure the redirect is correct.
when HTTP_REQUEST {
set redir_url https://[getfield [HTTP::host] ":" 1][HTTP::uri]
log local0. "redirecting to $redir_url"
HTTP::redirect https://[getfield [HTTP::host] ":" 1][HTTP::uri]
}
2. The redirect isn't making it to your second virtual. Add another log statement at the top of your second iRule to make sure control is making it in there.
when HTTP_REQUEST {
set uri [string tolower [HTTP::uri]]
log local0. "found uri: $uri"
if { $uri starts_with "/prod11" } {
...
Run some traffic through the http virtual and look at the logs and hopefully that will shed some light on the issue.
-Joe