header("Location: /") redirect in template file only works if user is logged in. Why?
Output of the tpl files is cached for anonymous users. But only their text output is, that's how Output Control Functions in PHP works. That's why Drupal API functions will not work as intended, either. They may do their job, all right, by serving as cache breakers, but you do not want to break cache on a busy website, as it may be a server killer.

Most stable way of doing temporary redirections is, as far as I found, an .htaccess way. mod_rewrite is already used by Drupal, so it cost you nothing in additional binaries loaded to memory, and it acts before PHP is even started. As described in this answer on SO, you can do this like that:

RewriteRule ^example/my-stuff/$ /example/home/ [L,R=301]


Put it before Drupal redirects, but in the same section.

If you need a PHP logic to decide if redirect is needed, you can do it using hook_menu_alter() instead:


Substitute original callback with yours
Perform any logic needed
Log to watchdog if you want to

Call original callback and return it's result if you are not redirecting, or
Redirect with drupal_goto('&lt;front&gt;')