В течение некоторого времени мой веб-сайт будет закрыт на техническое обслуживание, и я хочу убедиться, что (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>