我尝试过 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>