Redirects do not lead to program execution unless and until the current page has been completed. To execute a page in the midst of another page you can employ Server.Execute().
Server.Execute( "page2.afp" )
In principle, this is like a function call in Visual FoxPro. All PRIVATE variables that have been defined in the first page are also available to the subordinated pages. In contrast to a redirect you can pass to Server.Execute only files but no additional parameters separated by a question mark.
Use Server.Level() to set the current invocation depth. The maximal recursion depth is approximately eight pages but that depends on the individual procedures invoked.