This is an optional add-on app, redirects.

For full documentation, see either of these:

    * The file django/docs/redirects.txt in the Django distribution
    * http://www.djangoproject.com/documentation/redirects/ on the Web

Both have identical content.