在由Azure应用服务托管的DNN网站上,我们在web.config上设置了以下自定义规则:
<rewrite>
<rules>
<rule name="Proxy" stopProcessing="true">
<match url="^base3/?(.*)" />
<action type="Rewrite" url="https://(a website hosted in aws s3)/tx/{R:1}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
<set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" />
<set name="HTTP_X_Blog" value="1" />
</serverVariables>
</rule>
</rules>
我们还在applicationHost.xdt
中设置了以下内容:>
令人困惑,因为这是我们在其他站点上使用的重写规则。<?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <system.webServer> <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" /> <rewrite> <allowedServerVariables> <add name="HTTP_X_ORIGINAL_HOST" xdt:Transform="Insert" xdt:Locator="Match(name)"/> <add name="HTTP_X_UNPROXIED_URL" xdt:Transform="Insert" xdt:Locator="Match(name)"/> <add name="HTTP_ACCEPT_ENCODING" xdt:Transform="Insert" xdt:Locator="Match(name)"/> <add name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" xdt:Transform="Insert" xdt:Locator="Match(name)"/> <add name="HTTP_X_Mischief" xdt:Transform="Insert" xdt:Locator="Match(name)"/> <add name="HTTP_X_Blog" xdt:Transform="Insert" xdt:Locator="Match(name)"/> </allowedServerVariables> </rewrite> </system.webServer> </configuration>
但是,当尝试导航到它(https://(our azure webapp.com)/base3/index.html)时,我们不断收到错误消息您要查找的资源已被删除,名称已更改或暂时不可用。
我们甚至在全新的应用程序服务上尝试了相同的方法,并且上面的重写规则也可以正常工作。
[试图通过启发式分析找出问题所在,在以下情况下,在我们的web.config上重写规则现在可以使用:
在<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
下然后评论<add name="UrlRewrite" type="DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules" preCondition="managedHandler" />
但是,主站点现在中断了。。
我们如何实现与DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules
一起正常使用的重写规则?
在由Azure应用服务托管的DNN网站上,我们在web.config上设置了以下自定义规则:
UPDATE