Назад | Перейти на главную страницу

Как добавить в IIS сообщение об ошибке простоя для всего сайта с пользовательским кодом ошибки 503?

В течение некоторого времени мой веб-сайт будет закрыт на техническое обслуживание, и я хочу убедиться, что (1) поисковые системы видят код ошибки HTTP 503 для каждой страницы, и (2) люди видят дружеское сообщение с описанием времени простоя в соответствии с лучшие практики SEO для простоев.

Как настроить IIS 7.5 так, чтобы каждый запрос получал настраиваемое сообщение об ошибке 503?

Один из способов - использовать Url-Rewrite расширение.

Затем вы можете использовать подобное правило для перехвата всех запросов:

<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>

Это касается поисковых систем, для пользователей вы можете добавить следующее:

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

а затем поместите файл 503.html в корень вашего сайта с красивым сообщением об ошибке. Поскольку вы не можете использовать стили или изображения на странице, которые находятся на самом сайте, вам необходимо установить ссылку на другой сайт или поместить все стили и изображения в строку на странице html.

Если вы используете приложение .NET с IIS, можно также использовать app_offline.htm файл, чтобы закрыть приложение и предотвратить запросы страниц с соответствующим кодом ошибки 503.

Вы можете настроить web.config следующим образом и поместить его в свой корневой каталог.

<rule name="Send 503" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <action type="CustomResponse" statusCode="503" subStatusCode="0" statusReason="Service Unavailable" statusDescription="The server is down for maintenance" />
</rule>