我正在尝试配置Umbraco,以便后台办公室(www.mydomain.com/umbraco)的所有请求都被重定向到https,并且所有非后台请求都被转发到http。
通过设置此Web配置应用程序密钥,我可以轻松地让后台办公室使用SSL:
<add key="umbracoUseSSL" value="false" />
然而,我正在努力让所有其他页面强制http。证书是自签名的,因此我不希望最终用户收到SSL错误。我在web.config中尝试了这个重写规则,但没有任何影响。
<rule name="No-https" enabled="true" stopProcessing="true">
<match url=".*" negate="false" />
<conditions>
<add input="{HTTPS}" pattern="on" />
<add input="{URL}" pattern="umbraco" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" />
</rule>
我的目标是,对 https ://www.mydomain.com的任何请求都会重定向到 http ://www.mydomain.com,除非它与文件夹匹配/一把umbraco。
如果我有此规则,则所有http请求都会重定向到https:
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
但是当我否定这条规则时,它不再有任何影响吗?
<rule name="Redirect to HTTP" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
更新。看起来无法处理重定向,因为浏览器在重写规则运行之前发出了https错误? Redirect from https to http when the SSL cert is no longer valid。使用自签名证书时有没有办法重定向到http?
答案 0 :(得分:0)
我建议您考虑在您的网站上使/umbraco/
无效,并将其设为仅限HTTP。
然后我会设置一个不同的网站,可能是umbraco.yoursite.domain
,它确实需要SSL并允许该地址访问Umbraco。
另外,您是否考虑过使用LetsEncrypt为您的网站获取正确的SSL证书?
答案 1 :(得分:0)
尝试修改你的规则只匹配Umbraco路径,如下所示:
<rule name="Force SSL" stopProcessing="true">
<match url="^umbraco/(.*)" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
</rule>
这样,除了umbraco路径以外的任何地方的http请求都不会被重定向。对于https&gt; http请求尝试以下(未经测试)
<rule name="Force Http" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="ON" />
<add input="{PATH_INFO}" pattern="^umbraco/(.*)" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:0}" />
</rule>