diff --git a/src/Umbraco.Core/Routing/UriUtility.cs b/src/Umbraco.Core/Routing/UriUtility.cs index fb59ada249..1869641fb5 100644 --- a/src/Umbraco.Core/Routing/UriUtility.cs +++ b/src/Umbraco.Core/Routing/UriUtility.cs @@ -111,6 +111,12 @@ public sealed class UriUtility if (path != "/") { path = path.TrimEnd(Constants.CharArrays.ForwardSlash); + + // perform fallback to root if the path was all slashes (i.e. https://some.where//////) + if (path == string.Empty) + { + path = "/"; + } } return uri.Rewrite(path); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs index 906ee0e808..6f0c00f8db 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs @@ -23,7 +23,9 @@ public class UriUtilityTests // test that the trailing slash goes but not on hostname [TestCase("http://LocalHost/", "http://localhost/")] + [TestCase("http://LocalHost/////", "http://localhost/")] [TestCase("http://LocalHost/Home/", "http://localhost/home")] + [TestCase("http://LocalHost/Home/////", "http://localhost/home")] [TestCase("http://LocalHost/Home/?x=y", "http://localhost/home?x=y")] [TestCase("http://LocalHost/Home/Sub1/", "http://localhost/home/sub1")] [TestCase("http://LocalHost/Home/Sub1/?x=y", "http://localhost/home/sub1?x=y")]