Web.config 将某些子站点从 http 重定向到 https
Web.config redirect from http to https for some sub-site
所以我已经在 SO 上搜索和浏览类似主题一段时间了,但没有找到解决方案,我想我可能会问问。
我有一个包含多个子站点的主站点 sites/pages。
在我的 Web.config 主站点文件(影响所有子站点 sites/pages)中,我有以下规则:
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
此规则将所有请求重定向到主站点下的任何 page/site 到 https:// 这已经有一段时间了。
但是现在,我有 4 个子站点(主站点下的 4 个页面有自己的 URLs),我不想使用 https://。我们称它们为 www.apa.com、www.bepa.com、www.cepa.com、www.depa.com。我在 this similar topic 上看到一些评论说可以在这样的规则中进行排除,但我没有让它起作用。
所以我想我正在寻找一个单独的规则或对当前规则的一些排除,它为我的四个新子站点保留 http 并将所有其他 sites/pages 重定向到 https(目前) .
编辑:
所以我采取了不同的方法。现在我试图说哪些网站应该重定向到 https。以下正则表达式似乎在正则表达式测试器中运行完美,但在 web.config 文件中应用时,没有任何反应:
^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$
如果这个正则表达式匹配,我想将所有请求重定向到 https,如果不匹配,它应该保持 http。在 web.config 文件中,它看起来像:
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="/^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$/"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
</rules>
</rewrite>
然而这似乎没有任何作用。它就像不可能匹配完整的 URL 或其他东西。
我想出了一个解决方案:
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
<add input="{HTTP_HOST}" pattern="(.*SomeWordFromMyUrl*)"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
所以我已经在 SO 上搜索和浏览类似主题一段时间了,但没有找到解决方案,我想我可能会问问。
我有一个包含多个子站点的主站点 sites/pages。 在我的 Web.config 主站点文件(影响所有子站点 sites/pages)中,我有以下规则:
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
此规则将所有请求重定向到主站点下的任何 page/site 到 https:// 这已经有一段时间了。
但是现在,我有 4 个子站点(主站点下的 4 个页面有自己的 URLs),我不想使用 https://。我们称它们为 www.apa.com、www.bepa.com、www.cepa.com、www.depa.com。我在 this similar topic 上看到一些评论说可以在这样的规则中进行排除,但我没有让它起作用。
所以我想我正在寻找一个单独的规则或对当前规则的一些排除,它为我的四个新子站点保留 http 并将所有其他 sites/pages 重定向到 https(目前) .
编辑: 所以我采取了不同的方法。现在我试图说哪些网站应该重定向到 https。以下正则表达式似乎在正则表达式测试器中运行完美,但在 web.config 文件中应用时,没有任何反应:
^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$
如果这个正则表达式匹配,我想将所有请求重定向到 https,如果不匹配,它应该保持 http。在 web.config 文件中,它看起来像:
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="/^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$/"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
</rules>
</rewrite>
然而这似乎没有任何作用。它就像不可能匹配完整的 URL 或其他东西。
我想出了一个解决方案:
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
<add input="{HTTP_HOST}" pattern="(.*SomeWordFromMyUrl*)"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>