【问题标题】:Why IIS Rewrite - Redirect is not working?为什么 IIS 重写 - 重定向不起作用?
【发布时间】:2021-10-31 17:33:43
【问题描述】:

无法让 URL 重写工作。

http://my.domain/sso/my_app => http://my.domain:81/my_app

不必很复杂,对吧?

http://my.domain:81/my_app 显示预期的页面。

规则如下:

<rewrite>
    <globalRules>
        <rule name = "Laravel secure on port 81" enabled = "false" patternSyntax = "ECMAScript" stopProcessing = "true">
            <match url = "sso /(.*)" />
            <action type = "Redirect" url = "http://localhost:81/{R:1}" appendQueryString = "true" />
        </rule>
    </globalRules>
</rewrite>

我正在 IIS 服务器本身 http://localhost/sso/mon_app 上进行测试:没有重定向,连接失败。

我通过激活代理尝试了应用程序请求路由,通过检查或不检查“使用 URL 重写来检查传入请求”。 通过检查,它创建了一个我适应的重定向规则:

<rule name = "ARR_server_proxy" enabled = "true" patternSyntax = "ECMAScript" stopProcessing = "true">
    <match url = "* sso / *" />
    <action type = "Rewrite" url = "http://localhost:81/{R:1}" />
</rule>

无事可做,不行。

没有登录失败的请求。

我不知道了。

【问题讨论】:

    标签: iis url-rewriting


    【解决方案1】:

    谢谢,你帮我找出错误:它是端口号。

    我不知道我办公室禁止使用 81 端口。

    用8080端口做了一些其他的测试,没问题。

    在 ARR 中选中启用代理。

    在 ARR 中未检查使用 URL 重写来检查传入请求。

    规则停留在服务器级别,端口为 8080

    <rule name="Laravel secure on port 8080">
        <match url="sso/(.*)" />
        <action type="Rewrite" url="http://my.domain:8080/{R:1}" />
    </rule>
    

    【讨论】:

      【解决方案2】:

      您是否检查了 ARR 上的启用代理?反向代理仅在启用代理后才能工作。

      我认为有些地方导致重定向失败。

      • 规则Laravel secure on port 81 应该在站点级别而不是服务器级别添加。反向代理是将发往一个站点的请求代理到另一个站点,而不是一发到服务器就代理请求(请求还没有发到任何站点)。
      • 规则ARR_server_proxymatch url 中没有()。所以{R:1} 总是为空。

      总而言之,您只需将此规则删除到默认站点(或绑定到http://mydomian 的任何其他站点)。可以先将请求发送到默认站点。 url 匹配规则并将其 ARR 代理到http://my.domain:81/my_app

      如果还是失败,请使用failed request tracing to troubleshoot url rewrite

      【讨论】:

        猜你喜欢
        • 2015-01-29
        • 2013-02-27
        • 1970-01-01
        • 2010-12-05
        • 2013-06-23
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多