IIS – How to Add Site-Wide Downtime Error Message with Custom 503 Code

iisiis-7.5

My website will be down for maintenance for some time, and I want to make sure sure that (1) search engines see a HTTP 503 error code for every page, and (2) humans see a friendly message describing the downtime, in line with downtime SEO best practices.

How do I set up IIS 7.5 such that every request gets a custom 503 error message?

Best Answer

One way is to use the Url-Rewrite extension.

You can then use a rule like this to catch all requests:

<system.webServer>
    ...
    <rewrite>
        <rules>
            <rule name="SiteDown" stopProcessing="true">
                <match url=".*" />
                <action type="CustomResponse" statusCode="503" statusReason="Down for maintenance" statusDescription="will be back up soon" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

This takes care of the Search Engines, for the users you can add the following:

<system.webServer>
      ...
     <httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File">
        <remove statusCode="503" subStatusCode="-1" />
        <error statusCode="503" path="503.html" />
     </httpErrors>
</system.webServer>

and then put a 503.html file in the root of your site which has a nice error message. Because you can not use styles or images in the page that are on the site itself, you need to link to another site or put all styles and images inline in the html page.