我正在使用答案
given here作为尝试添加重写规则到我的web.config文件的基础。我希望它匹配任何不在本地主机上运行的url以强制https。
这是我现在所做的:
<system.webServer> <rewrite> <!-- force https - http://stackoverflow.com/a/15119044/51 --> <rules> <rule name="Redirect HTTP to HTTPS" stopProcessing="true"> <match url="^((?!localhost).)*$"/> <conditions> <add input="{HTTPS}" pattern="^OFF$"/> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/> </rule> </rules> </rewrite> </system.webServer>
我正在尝试使用negative lookaround,以便只匹配URL中不包含“localhost”的url。但这不行。
那么这个规则应该如何设置,以便只重写非本地主机的url?
尝试这个条件:
<system.webServer> <rewrite> <rules> <rule name="Redirect HTTP to HTTPS" stopProcessing="true"> <match url="^(.*)$"/> <conditions> <add input="{HTTPS}" pattern="^OFF$"/> <add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost$" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/> </rule> </rules> </rewrite> </system.webServer>
对localhost模式使用否定条件应该做到这一点。