根页面已强制重定向到 http 协议或如何从重定向到 https 中排除根页面

Root page has forced redirect to http protocol or how to exclude root page from redirection to https

我可以访问 IIS 应用程序,但我不知道是谁创建和部署了它。但我需要让这个应用程序通过 https 协议运行。我创建了 let's encrypt 证书并将其应用到网站。如果我遵循一些 URL,例如:https://example.com/aboutus 等等 - 它会按预期工作。但是当我尝试访问 https://example.com 时,它强行将我重定向到 http://example.com。然后,当我通过导航菜单访问其他页面时,它们是 http://example.com/about_us 等等,除了少数页面被强制重定向到 https,例如 https://example.com/sign_upsign_in .

如果我应用以下规则:

<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
                 <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>

正在重定向所有页面,但由于硬编码重定向而无法加载主页:

我不知道它是否在某处进行了硬编码。但目前我想将除主页以外的所有内容重定向到 https。我该怎么做?

回答 对我来说不起作用

这也不起作用:

<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
         <add input="{HTTPS}" pattern="^OFF$" />
         <add input="{URL}" pattern="example\.com\/.+" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" logRewrittenUrl="true" />
</rule>

可以参考这个规则,使用{HTTP_HOST}变量匹配根页面,然后通过negate属性取反

<rule name="Redirect to HTTPS except root page" enabled="true" stopProcessing="true">
   <match url="(.*)" />
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^http://example.com$" negate="true" />
            <add input="{HTTPS}" pattern="off" />
       </conditions>
   <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>

通过遵循 Lex Li 关于使用 FRT 的建议,我发现 URL 重写模块可以使用相对路径。例如,http://example.com/about_us 只是 /about_us,因此我的 pattern="example\.com\/.+" 不起作用。

以下规则按预期工作:

<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
    <match url="(.*)" />
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
           <add input="{URL}" pattern="\/.+" />
           <add input="{HTTPS}" pattern="^OFF$" />
       </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>

所有带有 http 协议的页面以 / 开头并且后面至少有一个符号,应该被重定向。