diff --git a/BTCPayServer/Filters/DomainMappingConstraintAttribute.cs b/BTCPayServer/Filters/DomainMappingConstraintAttribute.cs index b8145d08b2..ff59fc96f7 100644 --- a/BTCPayServer/Filters/DomainMappingConstraintAttribute.cs +++ b/BTCPayServer/Filters/DomainMappingConstraintAttribute.cs @@ -38,8 +38,9 @@ public bool Accept(ActionConstraintContext context) if (matchedDomainMapping != null) { var req = context.RouteContext.HttpContext.Request; - var url = new UriBuilder(req.Scheme, matchedDomainMapping.Domain).ToString(); - context.RouteContext.HttpContext.Response.Redirect(url); + var uri = new UriBuilder(req.Scheme, matchedDomainMapping.Domain); + if (req.Host.Port.HasValue) uri.Port = req.Host.Port.Value; + context.RouteContext.HttpContext.Response.Redirect(uri.ToString()); return true; } } @@ -55,15 +56,17 @@ public bool Accept(ActionConstraintContext context) return false; if (appType != matchedDomainMapping.AppType) return false; - context.RouteContext.RouteData.Values.Add("appId", matchedDomainMapping.AppId); - return true; + if (!hasAppId) + { + context.RouteContext.RouteData.Values.Add("appId", matchedDomainMapping.AppId); + return true; + } } } - if (AppType == policies.RootAppType) + if (AppType == policies.RootAppType && !hasAppId && !string.IsNullOrEmpty(policies.RootAppId)) { context.RouteContext.RouteData.Values.Add("appId", policies.RootAppId); - return true; }