Redirect to a custom page in hook_init()
If you define the redirect in hook_init, then it would work for non cached pages. But in case of Cached pages it would not work.

So it is recommended to use hook_boot instead of hook_init.

hook_boot would help you in redirecting for cached pages as well.