IIS 重写无法跨不同域工作

问题描述 投票:0回答:1

**根据评论纠正后根据我的最新情况更新此问题**

我已经安装了ARR

我遵循了这篇文章https://halfblood.pro/the-very-common-mistakes-when-using-iis-url-rewrite-module-a2ab7e4fee59以避免常见错误

我托管了 2 个 IIS 站点,其中很少有“.html”页面。

下面是我的 HTMLSite1 Web 配置文件中的重写规则。

    <rule name="Rewrite Page 3 to Page 4">
      <match url="Page3.html" />          
      <conditions>
        <add input="{HTTP_HOST}" pattern="^htmlsite1$" />
      </conditions>
      <action type="Rewrite" url="http://htmlsite1/Page4.html" logRewrittenUrl="true" />
    </rule>
    
    <rule name="Rewrite HTML Site 1 Page 1 to HTML Site 2 Page 4">
      <match url="Page1.html" />          
      <conditions>
        <add input="{HTTP_HOST}" pattern="^htmlsite1$" />
      </conditions>
      <action type="Rewrite" url="http://htmlsite2/Page4.html" logRewrittenUrl="true" />
    </rule>

上述规则对于两种重写都运行良好。一个在站点中,另一个正在重写到另一个站点。

URL重写-1

URL重写-2

然后

我托管了 2 个 IIS 站点,其中很少有“.aspx”页面。

此应用程序是示例 ASP.NET Web 应用程序,其中包含“主”页面。

下面是我的 TestSite1 Web 配置文件中的重写规则。

<rule name="Rewrite testsite1 Menu Page to testsite1 Contact Page">
      <match url="Menu" />        
      <conditions>
        <add input="{HTTP_HOST}" pattern="^testsite1$" />
      </conditions>
      <action type="Rewrite" url="Contact" logRewrittenUrl="true" />
    </rule>

上面的重写也有效。 (重写为域中的with)

以下重写在重写到另一个站点/域时不起作用

我在我的 testsite1 web.config 中有另一个跨域的 URL 重写,如下配置

    <rule name="Rewrite testsite1 About Page to testsite2 Menu Page">
      <match url="About" />       
      <conditions>
        <add input="{HTTP_HOST}" pattern="^testsite1$" />
      </conditions>
      <action type="Rewrite" url="http://testsite2/Menu" logRewrittenUrl="true" />
    </rule>

已更新

  • 我点击了 URL http://testsite1/About

  • 期望 URL 不应更改并期望来自 http://testsite2/About 的响应

  • 但是似乎发生了 URL 重写。我仅从 http://testsite1/About 收到回复。

  • 我确实启用了 FRT 来诊断此问题,并从日志文件中找到了以下内容。

  • 在日志文件中,我看到以下 2 次事件“URL_CHANGED”

  • 第一次看,感觉还不错。

  • 第二次,又变回实际的URL了。这就是问题所在,不知道为什么会发生这种情况。

           <EventData>
           <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
           <Data Name="OldUrl">/About</Data>
           <Data Name="NewUrl">http://testsite2/About</Data>
          </EventData>
    
           <EventData>
           <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
           <Data Name="OldUrl">http://testsite2/About</Data>
           <Data Name="NewUrl">/About</Data>
          </EventData>
    

完整的 FRT 活动:

            <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
         <System>
          <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
          <EventID>0</EventID>
          <Version>1</Version>
          <Level>5</Level>
          <Opcode>4</Opcode>
          <Keywords>0x400</Keywords>
          <TimeCreated SystemTime="2023-09-21T12:24:50.218Z"/>
          <Correlation ActivityID="{40000045-0000-F200-B63F-84710C7967BB}"/>
          <Execution ProcessID="15492" ThreadID="27696"/>
          <Computer>XXXXXXXXXXX</Computer>
         </System>
         <EventData>
          <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
          <Data Name="RuleName">Rewrite testsite1 About Page to testsite2 About Page</Data>
          <Data Name="RequestURL">http://testsite2/About</Data>
          <Data Name="QueryString"></Data>
          <Data Name="StopProcessing">false</Data>
          <Data Name="Succeeded">true</Data>
         </EventData>
         <RenderingInfo Culture="en-US">
          <Opcode>RULE_EVALUATION_END</Opcode>
          <Keywords>
           <Keyword>Rewrite</Keyword>
          </Keywords>
         </RenderingInfo>
         <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
          <EventGuid>{0469ABFA-1BB2-466A-B645-E3E15A02F38B}</EventGuid>
         </ExtendedTracingInfo>
        </Event>


        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
         <System>
          <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
          <EventID>0</EventID>
          <Version>1</Version>
          <Level>5</Level>
          <Opcode>12</Opcode>
          <Keywords>0x400</Keywords>
          <TimeCreated SystemTime="2023-09-21T12:24:50.218Z"/>
          <Correlation ActivityID="{40000045-0000-F200-B63F-84710C7967BB}"/>
          <Execution ProcessID="15492" ThreadID="27696"/>
          <Computer>XXXXXXXXXXXX</Computer>
         </System>
         <EventData>
          <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
          <Data Name="Substitution">http://testsite2/About</Data>
          <Data Name="RewriteURL">http://testsite2/About</Data>
          <Data Name="AppendQueryString">true</Data>
          <Data Name="LogRewrittenURL">true</Data>
         </EventData>
         <RenderingInfo Culture="en-US">
          <Opcode>REWRITE_ACTION</Opcode>
          <Keywords>
           <Keyword>Rewrite</Keyword>
          </Keywords>
         </RenderingInfo>
         <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
          <EventGuid>{0469ABFA-1BB2-466A-B645-E3E15A02F38B}</EventGuid>
         </ExtendedTracingInfo>
        </Event>
        
        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
         <System>
          <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
          <EventID>0</EventID>
          <Version>1</Version>
          <Level>4</Level>
          <Opcode>42</Opcode>
          <Keywords>0x0</Keywords>
          <TimeCreated SystemTime="2023-09-21T12:24:50.218Z"/>
          <Correlation ActivityID="{40000045-0000-F200-B63F-84710C7967BB}"/>
          <Execution ProcessID="15492" ThreadID="27696"/>
          <Computer>XXXXXXXXXXX</Computer>
         </System>
         <EventData>
          <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
          <Data Name="OldUrl">/About</Data>
          <Data Name="NewUrl">http://testsite2/About</Data>
         </EventData>
         <RenderingInfo Culture="en-US">
          <Opcode>URL_CHANGED</Opcode>
         </RenderingInfo>
         <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
          <EventGuid>{D42CF7EF-DE92-473E-8B6C-621EA663113A}</EventGuid>
         </ExtendedTracingInfo>
        </Event>


        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
         <System>
          <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
          <EventID>0</EventID>
          <Version>1</Version>
          <Level>4</Level>
          <Opcode>2</Opcode>
          <Keywords>0x400</Keywords>
          <TimeCreated SystemTime="2023-09-21T12:24:50.218Z"/>
          <Correlation ActivityID="{40000045-0000-F200-B63F-84710C7967BB}"/>
          <Execution ProcessID="15492" ThreadID="27696"/>
          <Computer>XXXXXXXXXXX</Computer>
         </System>
         <EventData>
          <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
          <Data Name="RequestURL">http://testsite2/About</Data>
         </EventData>
         <RenderingInfo Culture="en-US">
          <Opcode>URL_REWRITE_END</Opcode>
          <Keywords>
           <Keyword>Rewrite</Keyword>
          </Keywords>
         </RenderingInfo>
         <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
          <EventGuid>{0469ABFA-1BB2-466A-B645-E3E15A02F38B}</EventGuid>
         </ExtendedTracingInfo>
        </Event>

        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
         <System>
          <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
          <EventID>0</EventID>
          <Version>1</Version>
          <Level>4</Level>
          <Opcode>42</Opcode>
          <Keywords>0x0</Keywords>
          <TimeCreated SystemTime="2023-09-21T12:24:50.218Z"/>
          <Correlation ActivityID="{40000045-0000-F200-B63F-84710C7967BB}"/>
          <Execution ProcessID="15492" ThreadID="27696"/>
          <Computer>XXXXXXXXXXX</Computer>
         </System>
         <EventData>
          <Data Name="ContextId">{40000045-0000-F200-B63F-84710C7967BB}</Data>
          <Data Name="OldUrl">http://testsite2/About</Data>
          <Data Name="NewUrl">/About</Data>
         </EventData>
         <RenderingInfo Culture="en-US">
          <Opcode>URL_CHANGED</Opcode>
         </RenderingInfo>
         <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
          <EventGuid>{D42CF7EF-DE92-473E-8B6C-621EA663113A}</EventGuid>
         </ExtendedTracingInfo>
        </Event>
c# redirect iis url-rewriting
1个回答
0
投票

也许您尚未指定所有 IIS 设置。

也许您在 ARR 中配置了代理请求

iis machine root node->Application Request Routing Cache->Server Proxy Settings->Enable Proxy=true
,因此具有静态内容的网站的重定向可以正常工作。

也许您已为具有动态内容 (aspx) 的站点配置了服务器场。

如果是这种情况,那么原因是您在重定向规则中指定的地址是服务器场中的记录名称,并且在标头中进行代理时,它没有被替换,因此请求不会到达 testsite2,而是转到到测试站点1。

要解决此问题,您可以删除服务器场条目并使用 ARR 代理,或者使用这个相当简单的解决方案https://techcommunity.microsoft.com/t5/iis-support-blog/arr-change-the-hostname-on-重新路由到后端节点/ba-p/1340780

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.