Recently, I wanted to change the default Site Offline page that Drupal provides to a design that was less generic and more fitting with the style of the website. I needed to have the site in offline mode for a longer period of time while I was overhauling the content of the website. I developed a simple HTML placeholder page and by changing a couple lines of code in settings.php and adding a new function in template.php I was able to redirect the users to this static HTML page while the site was offline.

1.

First, add this function to the template.php of your custom theme. This function redirects the user to the specified page.

function THEMENAME_maintenance_page($content, $messages = TRUE, $partial = FALSE) {
  drupal_goto('http://www.example.com/placeholder.html');
}

2.

Next, update settings.php to change the way Drupal handles themes with regards to being in maintenance mode. In the settings.php file, around line 184, uncomment (remove the '#' character from the beginning of the line) so the line only reads,

$conf = array(

Around line 196, uncomment the line as well, and change minnelli to the name of your custom theme. This makes Drupal use your theme instead of the default minnelli theme when the site goes into maintenance mode.

settings.php changes

Around line 239, uncomment the line so it only reads

);

This will redirect the user to the page defined in the template.php function whenever the site is in maintenance mode. Alternatively, you can create a page template maintenance-page.tpl.php to display whenever the site is in maintenance mode. To use the .tpl.php page instead of a redirect to an HTML page, don't define the function in the template.php file, but do still change the settings.php file. Keep in mind, when the site is in maintenance mode, there can be no accesses to the database, so all dynamic requests in the tpl.php won't return HTML.

More information can be found here: http://drupal.org/node/195435