IIS重写无法跨不同域工作

mkshixfv  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(91)

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

我安装了ARR
我已经遵循这篇文章https://halfblood.pro/the-very-common-mistakes-when-using-iis-url-rewrite-module-a2ab7e4fee59,以避免常见的错误
我已经主办了2个IIS网站与几个“.html”的网页。
下面是重写规则,我在我的HTMLSite 1网络配置文件。

<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应用程序,其中包含“主”页。
下面是我在TestSite 1 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 in the domain)

当重写到另一个网站/域时,下面的重写不起作用

我有另一个网址重写在我的testsite1web.config域如下配置

<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>

更新

  • 我点击了网址http://testsite 1/About
  • 预期URL不应更改,并且预期来自http://testsite 2/About的响应
  • 但是URL重写似乎发生了。我只从http://testsite 1/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>

全功能活动:

<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>
iqjalb3h

iqjalb3h1#

也许您没有指定所有的IIS设置。
也许你已经在ARR iis machine root node->Application Request Routing Cache->Server Proxy Settings->Enable Proxy=true中配置了重定向请求,所以对静态内容的网站的重定向可以正常工作。
也许你已经为动态内容(aspx)的网站配置了服务器场。
如果是这种情况,那么原因是您在重定向规则中指定的地址是服务器场中记录的名称,并且在头中重复时不会被替换,因此请求不会到达testsite2,而是到达testsite1。
要解决这个问题,您可以删除Server Farms条目并使用ARR重命名,或者使用这个相当简单的解决方案https://techcommunity.microsoft.com/t5/iis-support-blog/arr-change-the-hostname-on-re-routing-to-backend-node-the/ba-p/1340780

相关问题