【发布时间】:2016-05-01 17:55:42
【问题描述】:
所以我一直在谷歌搜索和浏览关于 SO 的类似主题一段时间,但没有找到解决方案,我想我可能只是问一下。
我有一个包含多个子站点/页面的主站点。 在我的主站点(影响所有子站点/页面)的 Web.config 文件中,我有以下规则:
<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>
此规则将所有请求重定向到主站点下的任何页面/站点到 https:// 这已经有一段时间了。
但是,现在我有 4 个子站点(主站点下的 4 个页面具有自己的 URL),我不想使用 https://。我们称他们为 www.apa.com、www.bepa.com、www.cepa.com、www.depa.com。我在this similar topic 上阅读了一些评论,说可以在这样的规则中进行排除,但我没有让它起作用。
所以我想我正在寻找一个单独的规则或对该当前规则的某些排除,它为我的四个新子站点保留 http 并将所有其他站点/页面重定向到 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 或其他内容。
【问题讨论】:
标签: asp.net .net redirect web-config