根据评论更正后,根据我的最新情况更新此问题
我安装了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>
1条答案
按热度按时间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