HTTPS 重定向到一个不起作用的文件夹

Posted

技术标签:

【中文标题】HTTPS 重定向到一个不起作用的文件夹【英文标题】:HTTPS redirect to a folder not working 【发布时间】:2017-07-16 14:54:55 【问题描述】:

我刚刚安装了 https 证书,并且很难设置重定向。 我尝试在 IIS (7.5) 中使用 HTTP 重定向,但是一旦通过初始登录页面,它就无法在 IE、FF 和 Chrome 中工作,我收到“重定向过多”错误。 我也尝试过 URL 重写,但完全失败,所以我恢复到 HTTP 重定向。

用户曾经使用“http://example.com/internal”访问该站点。现在,我想将其重定向到“https://internal.example.com/internal”,但无法正常工作。如果可能的话,我宁愿不使用 URL 中的最后一个“内部”(我在请求 CSR 时使用的通用名称是 internal.example.com)。

在 HTTP 重定向中,我将“重定向到此目标的请求”设置为“https://internal.example.com/internal/default.aspx”,并将“重定向行为”设置为“仅将请求重定向到此目录中的内容”,状态码为 301(永久)。

网站有一个“内部”文件夹,其中包含 .Net 应用程序文件并需要表单身份验证。根文件夹中的文件对所有人开放(即 www.example.com 对所有人开放)。

非常感谢您提供的任何设置帮助。

更新

我更新了 web.config 并添加了一些 URL 重写规则,但仍然不完全存在。 在 IE 中,当我键入 example.com/internal 时,它转到 https://internal.example.com 但不是 http://internal.example.com/internal。 在 Chrome 中,它不会转到 https,停留在 http 并显示“不安全”。

<rewrite>
    <rules>
        <rule name="Rewrite to internal" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="HTTP_HOST" pattern="^www.example.com$" />
            </conditions>
            <action type="Redirect" url="R:1" />
        </rule>
        <rule name="internal.example.com to sub folder internal" enabled="true" stopProcessing="true">
            <match url="(.*)" ignoreCase="true" />
            <conditions logicalGrouping="MatchAll">
                <add input="HTTPS" pattern="^OFF$" />
                <add input="HTTP_HOST" pattern="^internal\.example\.com$" ignoreCase="false" />
                <add input="PATH_INFO" pattern="^/internal($|/)" negate="true" />
            </conditions>
            <action type="Redirect" url="https://HTTP_HOST/" />
        </rule>
    </rules>
</rewrite>

第一条规则是让http://example.com通过;第二种是将http://example.com/internal重定向到https://internal.example.com/internal。

【问题讨论】:

【参考方案1】:

在 IIS 中检查您的身份验证小程序。它应该允许匿名身份验证。

【讨论】:

谢谢。除了“表单身份验证”之外,我还选择了“基本身份验证”,它不允许我启用匿名身份验证。我禁用了基本并启用了匿名,但没有改变。我刚刚用一些关于 web.config 修改的附加信息更新了这个问题。 我决定放弃 URL 重写和 HTTP 重定向,并在 Request.ServerVariables["SERVER_NAME"] 和 Request.ServerVariables[" 的 Default.aspx.cs 的 Page_Init 上使用 Response.Redirect 添加重定向语句PATH_INFO"] 满足我的重定向条件。在所有浏览器中都能正常工作。 我在一个项目上有类似的设置,我需要做的就是设置匿名身份验证,禁用所有其他身份验证,然后使用 web config rewrite 将所有端口 80 流量重定向到 443。跨度> 我没有使用 URL 重写,它对我来说不能正常工作,我刚刚更新了网站的 default.aspx.cs 来进行重定向。我认为如果您使用我的 URL 重写的第二部分并摆脱 2n 和 3rd 输入条件,它应该适合您。 不,你误解了我的意思,我使用重写规则按要求工作。

以上是关于HTTPS 重定向到一个不起作用的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 到 HTTPS 301 重定向代码不起作用,它说重定向太多

使用 AWS Elastic Beanstalk 重定向到 https 不起作用

htaccess 重定向到 https 和 www 不起作用

http到https重定向使用htaccess在角度6中不起作用

重定向在 Apache 中不起作用,HTTP 到 HTTPS

Laravel 5 - 发布路由上的 htaccess HTTPS 重定向不起作用。