На нашем сайте DNN, размещенном в службе приложений Azure, в нашем файле 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: // (наш azure webapp.com) /base3/index.html) мы постоянно получаем ошибку Ресурс, который вы ищете, был удален, изменилось его имя или временно недоступен. , что сбивает с толку, поскольку это правило переписывания мы использовали на других наших сайтах.
Мы даже попробовали такой же подход для службы приложений fre sh, и вышеприведенное правило переписывания работает просто отлично.
Попытка выяснить, что не так, с помощью анализа heuristi c, на наше web.config теперь правило перезаписи работает, если:
под <system.webServer>
<modules runAllManagedModulesForAllRequests="true">
, тогда комментируя <add name="UrlRewrite" type="DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules" preCondition="managedHandler" />
Однако основной сайт теперь ломается ..
Как мы реализовать правило перезаписи, которое работает правильно с DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules
??