我希望在我的web.config文件中设置重写规则,强制网址使用“www”子域。这样做是这样的:
<rules>
<rule name="Add WWW" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" />
</rule>
但是,该项目在多个域上运行多个网站,其中一些使用SSL而另一些则不使用。
上面的代码将http://
硬编码到重定向中。我想要做的是抽象它,以便在重定向期间维护http或https协议而不进行硬编码。
所需结果的一些例子是:
非常感谢。
答案 0 :(得分:0)
我找到了一个reference,解释了这样做的一种方法。它使用重写键/值对作为变量&#39;在动作网址中,(据我所知)目前无法将协议作为规则内的原生变量获取。
规则已经修改如下,应该按照要求进行修改:
<rewrite>
<rules>
<rule name="Add www maintain https" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" />
</conditions>
<action type="Redirect" url="{MapSSL:{HTTPS}}www.{C:0}{PATH_INFO}" redirectType="Permanent" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapSSL" defaultValue="http://">
<add key="ON" value="https://" />
<add key="OFF" value="http://" />
</rewriteMap>
</rewriteMaps>
</rewrite>
还有另一个reference,其中包括以其他方式实现同样的目标。