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

SetEnvIfNoCase Host: преобразование .htaccess в web.config

Я пробовал IIS Manager и некоторые онлайн-инструменты преобразования, но не могу понять, как добиться следующих правил .htaccess в файле web.config:

SetEnvIfNoCase Host my-domain.com  nopassreq

AuthType Basic
AuthName "Restricted"
AuthUserFile "/home/my-domain.com/passwd"
require valid-user

Order allow, deny
Allow from env=nopassreq
Satisfy any

Обычно, если пользователь зашел на сайт с помощью my-domain.com он не запрашивает аутентификацию, но если бы это было my-other-domain.com или что-нибудь еще, он запросит аутентификацию.

У меня есть несколько доменов, указывающих на один и тот же экземпляр облака в Azure, и мне нужно, чтобы некоторые из них требовали аутентификации, а некоторые нет.

Немного попробовал, не эксперт .net, и получил этот код:

<rewrite>
    <outboundRules>
         <rule name="nopassres">
             <match serverVariable="nopassreq" pattern=".*" />
             <action type="Rewrite" value="dontpass" />
             <conditions>
                 <add input="{HTTP_HOST}" pattern="my\-domain\.com" />
             </conditions>
         </rule>
    </outboundRules>
</rewrite>

Я не знаю, как настроить это в IIS с помощью правил перенаправления URL-адресов, потому что поддерживаются только действия «Перезапись», «Нет», «Перенаправление», «Пользовательский ответ» и «Запрос на прерывание». Вы можете использовать их для установки переменных среды, которые ваш код сможет оценить позже.

Поскольку этот параметр можно определить для каждого сайта, возможно, вам больше повезет с реализацией некоторой автоматизации с помощью командлетов PowerShell для IIS. Например, чтобы включить анонимную аутентификацию:

Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/AnonymousAuthentication `
        -name enabled -value false -location YourApp