bugfix NiceUrlProvider when running in a virtual directory

This commit is contained in:
Stephan
2012-10-25 12:14:21 -02:00
parent f146b8f6af
commit 62a48df421

View File

@@ -234,22 +234,24 @@ namespace Umbraco.Web.Routing
if (domainUri == null)
{
// no domain was found : return an absolute or relative url
// handle vdir if any
// ignore vdir at that point
if (!absolute || current == null)
uri = new Uri(UriUtility.ToAbsolute(path), UriKind.Relative);
uri = new Uri(path, UriKind.Relative);
else
uri = new Uri(current.GetLeftPart(UriPartial.Authority) + UriUtility.ToAbsolute(path));
uri = new Uri(current.GetLeftPart(UriPartial.Authority) + path);
}
else
{
// a domain was found : return an absolute or relative url
// cannot handle vdir, has to be in domain uri
// ignore vdir at that point
if (!absolute && current != null && domainUri.GetLeftPart(UriPartial.Authority) == current.GetLeftPart(UriPartial.Authority))
uri = new Uri(CombinePaths(domainUri.AbsolutePath, path), UriKind.Relative); // relative
else
uri = new Uri(CombinePaths(domainUri.GetLeftPart(UriPartial.Path), path)); // absolute
}
// UriFromUmbraco will handle vdir
// meaning it will add vdir into domain urls too!
return UriUtility.UriFromUmbraco(uri);
}
@@ -266,18 +268,21 @@ namespace Umbraco.Web.Routing
if (!domainUris.Any())
{
// no domain was found : return an absolute or relative url
// handle vdir if any
// ignore vdir at that point
if (current == null)
uris.Add(new Uri(UriUtility.ToAbsolute(path), UriKind.Relative));
uris.Add(new Uri(path, UriKind.Relative));
else
uris.Add(new Uri(current.GetLeftPart(UriPartial.Authority) + UriUtility.ToAbsolute(path)));
uris.Add(new Uri(current.GetLeftPart(UriPartial.Authority) + path));
}
else
{
// domains were found : return -- FIXME?
// domains were found : return absolute urls
// ignore vdir at that point
uris.AddRange(domainUris.Select(domainUri => new Uri(domainUri.GetLeftPart(UriPartial.Path).TrimEnd('/') + path)));
}
// UriFromUmbraco will handle vdir
// meaning it will add vdir into domain urls too!
return uris.Select(uri => UriUtility.UriFromUmbraco(uri));
}