Click here to Skip to main content
15,887,267 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
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>
Posted
Updated 27-Feb-24 23:52pm
v4
Comments
Richard Deeming 28-Feb-24 4:41am    
IIS and the rewrite module won't do this by themselves. You must have set up a rewrite rule that's doing it.

But since you haven't shown us any of your rewrite rules, we can't tell you what the problem is.
Member 14703094 28-Feb-24 5:53am    
Hello Richard, thanks for reply. I have updated the post with all of our rewrites (there are many).

1 solution

Assuming it's the "Add trailing slash" rule that's causing the problem, your match is missing the "start of line" anchor:
XML
<match url="(.*[^/])$" ignoreCase="true"/>
should be:
XML
<match url="^(.*[^/])$" ignoreCase="true"/>
 
Share this answer
 
Comments
Member 14703094 28-Feb-24 10:05am    
Looking at logs this rule is responsible for creating a redirect for sure, because, when an request URL such as "https://example.com/http:/google.com" enters the pipeline, first, before any rewrite rule is being evaluated, get shorted to just "http:/google.com". Then, when it reaches the mentioned trailing slash rule, the address is changed into "http:/google.com/" with a slash at the end and the redirect is being made. Adding the anchor unfortunately didn't change the outcome.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900