Есть ли способ закрыть * весь * сайт IIS и все приложения дружеским сообщением?

В настоящее время у нас есть несколько сайтов с несколькими виртуальными приложениями. Вот так:

Site1
    /app1
    /app2
    /app3

Site2
    /app1
    /app2
    /app3

В этом сценарии "app1", "app2" и "app3" для обоих сайтов указывают на одну и ту же физическую папку. Мы используем IIS 7.0 и.NET 4.0.

Цель состоит в том, чтобы закрыть Site1 и любой доступ к любому из его виртуальных приложений, показывая дружественное сообщение, но не закрывая Site2 в процессе. Если мы положим app_offline.htm файл в корне, он прекрасно работает... когда пользователи переходят в корень. Однако если пользователь переходит непосредственно к одному из виртуальных приложений, app_offline.htm в корне игнорируется. Размещение app_offline.htm в каждый виртуальный каталог это не вариант, так как это приведет к отключению как Site1, так и Site2 для этого приложения.

Очевидно, что мы можем остановить пулы приложений, но это показывает ужасное сообщение 503 Service Unavailable, и я предпочитаю не изменять саму страницу ошибки 503.

1 ответ

Решение

Я бы изменил физический путь для Site1, чтобы он указывал куда-то еще, например /siteoffline, с файлом default.htm, в котором есть ваше дружеское сообщение. Затем я бы добавил правило перенаправления URL-адреса, соответствующее всем запросам: (.*), И перенаправил в /default.htm. Правила будут выглядеть так:

    <rewrite>
        <rules>
            <clear />
            <rule name="DontRedirectDefault" stopProcessing="true">
                <match url="default.htm" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="None" />
            </rule>
            <rule name="RedirectAllToRoot" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAny" trackAllCaptures="false" />
                <action type="Redirect" url="/default.htm" />
            </rule>
        </rules>
    </rewrite>

Первое правило - пропустить перенаправление, если мы уже смотрим на default.htm. Все остальное перейдет ко второму правилу и перенаправит все в /default.htm.

Другие вопросы по тегам