We have an ASP.NET Core 7 MVC app hosted on Azure and IIS. For some purposes, like adding a trailing slash, we use URL rewrites. But this rule appears to cause a problem with unwanted redirects from URL parameter, so for example, https://example.com/http:/google.com will redirect to the Google site.
What happens is this: when the request enters the RewriteModule, it's looks like this:
http://rockstar-dev-web-01:80/http:/google.com
(a bit obfuscated, but you get the idea), but then it appears to be split on it's own into two parts and the second one is being processed. Once it hits the add the trailing slash rewrite, a 301 redirect is made. Here are logs to illustrate this behavior, as you can see it the end only the latter part of the URL is being processed:
GENERAL_REQUEST_START SiteId="1922794053237", AppPoolId="rockstar-dev-web-01", ConnId="805308232052", RawConnId="8053080123152", RequestURL="http://rockstar-dev-web-01:80/https:/wp.pl", RequestVerb="GET" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="FailedRequestsTracingModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="FailedRequestsTracingModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="RequestMonitorModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="RequestMonitorModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="IsapiFilterModule" 20:16:22.600 FILTER_PREPROC_HEADERS_START 20:16:22.600 FILTER_START FilterName="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" 20:16:22.600 GENERAL_SET_REQUEST_HEADER HeaderName="AspFilterSessionId", HeaderValue="", Replace="true" 20:16:22.600 FILTER_SET_REQ_HEADER HeaderName="AspFilterSessionId:", HeaderValue="" 20:16:22.600 FILTER_END NotificationStatus="SF_STATUS_REQ_NEXT_NOTIFICATION" 20:16:22.600 FILTER_PREPROC_HEADERS_END 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="IsapiFilterModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="RewriteModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="RewriteModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="ARRHelper" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="ARRHelper", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="DynamicIpRestrictionModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="DynamicIpRestrictionModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="ProcessMonitoringModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="ProcessMonitoringModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="DWASModule" 20:16:22.600 GENERAL_SET_REQUEST_HEADER HeaderName="HOST", HeaderValue="develop.rockstar.com", Replace="true" 20:16:22.600 GENERAL_SET_REQUEST_HEADER HeaderName="x-ms-http-forward", HeaderValue="", Replace="true" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="DWASModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 PRE_BEGIN_REQUEST_START ModuleName="AzureSlaModule" 20:16:22.600 PRE_BEGIN_REQUEST_END ModuleName="AzureSlaModule", NotificationStatus="NOTIFICATION_CONTINUE" 20:16:22.600 GENERAL_REQUEST_HEADERS Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.5 Host: develop.rockstar.com Max-Forwards: 10 TE: trailers User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 DNT: 1 sec-gpc: 1 sec-fetch-dest: document sec-fetch-mode: navigate sec-fetch-site: none sec-fetch-user: ?1 X-ARR-LOG-ID: c57dc640-fe88-4a55-823c-3620113afe17 DISGUISED-HOST: develop.rockstar.com X-SITE-DEPLOYMENT-ID: rockstar-dev-web-01 WAS-DEFAULT-HOSTNAME: rockstar-dev-web-01.azurewebsites.net X-Forwarded-Proto: https X-AppService-Proto: https X-Forwarded-TlsVersion: 1.3 X-Original-URL: /https://wp.pl X-WAWS-Unencoded-URL: /https://wp.pl 20:16:22.600 URL_CACHE_ACCESS_START RequestURL="/https:/wp.pl"
What I have tried:
I have removed the rewrite rule and it doesn't allow anymore redirects, but that's not a long-term option. I have also tried to reshuffle the order of rewrites, but to no success - the problem still persists.
How to fix this problem?
EDIT: List of our rewrites:
<rules>
<rule name="rockstar siteassets test" stopProcessing="true">
<match url="^siteassets\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar SysSiteAssets test" stopProcessing="true">
<match url="^SysSiteAssets\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar globalassets test" stopProcessing="true">
<match url="^globalassets\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar contentassets test" stopProcessing="true">
<match url="^contentassets\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar dam.papirfly test" stopProcessing="true">
<match url="^dam\.papirfly\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar dist/assets test" stopProcessing="true">
<match url="^dist\/assets\/(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz" />
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar UK develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.co\.uk$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/uk{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar Asia develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstarasia\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/asia{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar DE develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.de$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/de{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar FR develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fr$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/fr{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar IN develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.in$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/in{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar RU develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.ru$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/ru{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar PL develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.pl$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/pl{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar CZ develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.cz$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/cz{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar NL develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.nl$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/nl{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar DK develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.dk$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/dk{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar FR-CA develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop-fr\.rockstar\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/fr-ca{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar SE develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.se$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/se{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar NO develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.no$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/no{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar FI develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.fi$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/fi{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar AT develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstar\.at$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/at{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="rockstar Group develop redirect" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern" pattern="^develop\.rockstargroup\.com$" />
</conditions>
<action type="Redirect" url="https://develop.rockstar.com/group{PATH_INFO}" redirectType="Permanent"/>
</rule>
<rule name="Add trailing slash" stopProcessing="true">
<match url="(.*[^/])$" ignoreCase="true"/>
<conditions>
<add input="{URL}" pattern="^(.+?)/$" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.html$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.xml$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.aspx$" negate="true" />
<add input="{URL}" pattern="^/(.*?)?(/?)(siteassets|globalassets|contentassets|SysSiteAssets|bundles|api|papirfly|dist|Static/HouseProductDemo|mini-profiler-resources|custom-routes|auth0|dam.papirfly)\/" negate="true"/>
<add input="{URL}" pattern="^/(.*?)?(/?)(robots.txt|favicon.ico|Sitemap.xml|sitemap-index.xml)" negate="true"/>
<add input="{URL}" pattern="^/(.*?)?(/?)(modules/Protected|EPiServer|EPiServer/CMS/admin|util|modulesbin|IndexingService/IndexingService.svc)" negate="true"/>
<add input="{URL}" pattern="^/(.*?)?(/?)(productsOverviewAsync|languageSelectorAsync|rockstarNodeAsync|rockstarNodeAsync)" negate="true"/>
<add input="{URL}" pattern="^/(rockstarProductAsync|rockstarRtiProductAsync)" negate="true"/>
<add input="{URL}" pattern="^/(.*?)?(/?)(documentationListAsync|downloadAndOrderItemsAsync|videoListAsync|commerceDocumentLibraryAsync|parafonCommerceDocumentLibraryAsync)" negate="true"/>
<add input="{URL}" pattern="^/(.*?)?(/?)(GatedContentPageAsync)" negate="true"/>
<add input="{URL}" pattern="^/.*/sitemap.xml$" negate="true"/>
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>
<rule name="http to https" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{PATH_INFO}" redirectType="Permanent"/>
</rule>
</rules>