SetEnvIfNoCase 主机:.htaccess 到 web.config 的转换

SetEnvIfNoCase 主机:.htaccess 到 web.config 的转换

我尝试过 IIS 管理器和一些在线转换工具,但我不知道如何在 web.config 文件中实现以下 .htaccess 规则:

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 上的同一个云实例,我需要其中一些域需要身份验证,而一些则不需要。

答案1

我不知道如何在 IIS 中使用 URL 重定向规则进行设置,因为唯一支持的操作是重写、无、重定向、自定义响应和中止请求。不过,您可以使用它们来设置您的代码稍后可以评估的环境变量。

由于此设置可以根据每个站点进行定义,因此使用 IIS 的 PowerShell cmdlet 实现一些自动化可能会更好。例如,要切换匿名身份验证:

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

答案2

尝试了一下,不是.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>

相关内容