I agree about the non-maintainability, so will change to a dispatcher pattern.

One ugly requirement w.r.t. shib is that it depends on exact URL locations (these are proxied from nginx -> apache -> mod_shib), so this dispatcher will have to use redirects instead of hooking up appropriate backend functions, at least for shib.