In an Umbraco 13 project on Umbraco Cloud, we had a few IIS redirect rule, which has been working so for - also in combination with addons like Umbraco Deploy.
<rule name="Redirect umbraco.io to actual domain" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="\.umbraco\.io$" />
<add input="{HTTP_HOST}" pattern="^(dev|stage)(.*)?.euwest01.umbraco.io$" ignoreCase="true" negate="true" />
<add input="{REQUEST_URI}" pattern="^/App_Plugins/" negate="true" />
<add input="{REQUEST_URI}" pattern="^/umbraco" negate="true" />
<add input="{REQUEST_URI}" pattern="^/sb" negate="true" /> <!-- Don't redirect Smidge Bundle -->
<add input="{REQUEST_URI}" pattern="localhost" negate="true" />
</conditions>
<action type="Redirect" url="https://www.primo.com/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
<rule name="SEO - Remove trailing slash" stopProcessing="true">
<match url="(.*)/+$" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/umbraco" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="SEO - Convert to lower case" stopProcessing="true">
<match url=".*[A-Z].*" ignoreCase="false" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/umbraco" negate="true" />
<add input="{REQUEST_URI}" pattern="^.*/install" negate="true" />
</conditions>
<action type="Redirect" url="{ToLower:{R:0}}" />
</rule>
<rule name="Redirect to www prefix" stopProcessing="true">
<match url=".*" />
<conditions>
<!--<add input="{HTTP_HOST}" pattern="^www\." negate="true" />-->
<add input="{HTTP_HOST}" pattern="^(www|da|no|se|fi|de|nl|pl|cn|us)(.*)" ignoreCase="true" negate="true" />
<add input="{HTTP_HOST}" pattern=".*azurewebsites.net*" negate="true" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="^localhost(:[0-9]+)?$" negate="true" />
<add input="{HTTP_HOST}" pattern="\.umbraco\.io$" negate="true" />
</conditions>
<action type="Redirect" url="https://www.{HTTP_HOST}/{R:0}" />
</rule>
<rule name="HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
But after upgrading to Umbraco 17 something were wrong as part of Umbraco Deploy was missing. The dashboards were shown, but the actions to transfer and restore content were missing.
After talk with Umbraco support team, we noted the SEO redirect rules causes issues with redirecting the Umbraco backoffice modules at /umbraco/backoffice/
The documentation mainly mention to negate ^/umbraco:
https://docs.umbraco.com/umbraco-cloud/go-live/manage-hostnames/rewrites-on-cloud
https://docs.umbraco.com/umbraco-cms/develop-with-umbraco/application-code/backend-and-custom-logic/routing/iisrewriterules
I initially tried a new rule before SEO redirects suggested by AI:
<rule name="Skip Umbraco backoffice" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/umbraco($|/.*)" />
</conditions>
<action type="None" />
</rule>
But it didn't quite seem to fix the issue and AI further mentioned:
You’re running into a classic IIS Rewrite gotcha: “stopProcessing” only stops rule evaluation for that request if the rule actually executes in the same rewrite phase — but Umbraco backoffice assets often get hit in a way where later rules still apply (especially when rules are evaluated in different stages or rewritten URLs re-enter the pipeline).
Also: your current rule uses action type="None", which is fine, but it does not guarantee a hard stop for subsequent rewrite rules that operate on rewritten paths or later conditions like {REQUEST_FILENAME}-based rules.
However a safer solution was to added the following to the redirects currently has ^/umbraco, which did solve the issue in this concrete project:
Yes. Right now you already exclude some /umbraco requests, but a few of these rules can still interfere with backoffice assets, APIs, previews, or installer routes depending on the exact URL shape.
The safest approach is to consistently exclude all backoffice traffic early in every SEO/redirect rule.
A robust pattern is:
<add input="{REQUEST_URI}" pattern="^/umbraco($|/.*)" negate="true" />
and an extended version including these:
<add input="{REQUEST_URI}" pattern="^/umbraco($|/.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^/install($|/.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^/App_Plugins($|/.*)" negate="true" />
In an Umbraco 13 project on Umbraco Cloud, we had a few IIS redirect rule, which has been working so for - also in combination with addons like Umbraco Deploy.
But after upgrading to Umbraco 17 something were wrong as part of Umbraco Deploy was missing. The dashboards were shown, but the actions to transfer and restore content were missing.
After talk with Umbraco support team, we noted the SEO redirect rules causes issues with redirecting the Umbraco backoffice modules at
/umbraco/backoffice/The documentation mainly mention to negate
^/umbraco:https://docs.umbraco.com/umbraco-cloud/go-live/manage-hostnames/rewrites-on-cloud
https://docs.umbraco.com/umbraco-cms/develop-with-umbraco/application-code/backend-and-custom-logic/routing/iisrewriterules
I initially tried a new rule before SEO redirects suggested by AI:
But it didn't quite seem to fix the issue and AI further mentioned:
However a safer solution was to added the following to the redirects currently has
^/umbraco, which did solve the issue in this concrete project:and an extended version including these: