Skip to content Skip to navigation

Creating a Static Copy of a Website

The modern Web is a dynamic place. However, sometimes it's necessary (or desirable) to remove the dynamic functionality of a website, while preserving its static content.

Inspired in part by Karen Stevenson's excellent blog post, "Sending a Drupal Site into Retirement," I wanted to outline a few other techniques for accomplishing this.

Reasons you may want to create a static copy of a site:

  • The site runs on an outdated version of dynamic web software
  • The site has been hacked, but its content is still relevant
  • The site's content has lost its immediacy, but may need to be revived in the future as a dynamic website
  • The site was built in 2004 in ColdFusion by a vendor that has flown the coop (oops)

Method One: wget

Wget is a cross-platform command-line program for retrieving web pages. It's almost like it was built to do this.

Run the following code to crawl and save it as flat files to an arbitrary directory of your choosing (noted by /path/to/destination/directory):
 wget -P /path/to/destination/directory/ -mpck --user-agent="" -e robots=off --wait 1 -E <a href=""></a>

See this code explained on explainshell

More Information for the Stanford Web Environment

If you have a Drupal, WordPress, or MediaWiki site hosted on the Stanford WWW servers (AKA "AFS"), you can use the wget method to create a static copy of your site in cgi-bin.

Assuming you have a site at and it lives at /afs/ir/group/ponies/cgi-bin/drupal.

  1. SSH into
  2. Run the following command:
     wget -P /afs/ir/group/ponies/WWW/ -mpck --user-agent="" -e robots=off --wait 1 -E <a href=""></a>
  3. Visit in a browser; you should have a full copy of your production site
  4. You may have to do some cleanup of the HTML code, and may want to rename the directory using the following command:
    mv /afs/ir/group/ponies/WWW/ /afs/ir/group/ponies/WWW/static
  5. Once you've checked everything out and it looks good, you can submit a Virtual Host change request so that points at
  6. If you want to then delete the dynamic site, submit a HelpSU request.
  7. Note: if the site is a Drupal site, you may want to disable CSS and Javascript aggregation, so that wget will grab the original source versions of those files

Method Two: Drupal's "Disable All Forms" Module

If it's a Drupal site, you can use the Disable All Forms Module. This module does exactly what it says: it disables all forms. Using it requires Bad Judgement (sic).

This method works well if you may want to revive the Drupal site at some point in the future, but don't want to deal with spammers and other malcontents.

Method Three: WordPress Plugin

There are a variety of WordPress plugins to create a static copy of a WordPress site.

See Also