1

当用户想要转移到域之间的动作游戏时,我遇到了一些问题。组织在本地版本的这个:

mysite.com/subdomain1/webpage/show?url=about
mysite.com/subdomain2/webpage/show?url=about

在全球范围内:

subdomain1.mysite.com/webpage/show?url=about
subdomain2.mysite.com/webpage/show?url=about

我想让用户每次都不要进入主子域。例如:当前页面 - subdomain1.mysite.com/webpage/show?url=about。我想查看subdomain2类似的页面。我将用户重定向到subdomain2.mysite.com/. 但我想重定向用户 - subdomain2.mysite.com/webpage/show?url=about 没有过渡subdomain2.mysite.com

如何在 ASP MVC 和 C# 中做到这一点?

4

2 回答 2

1
public static string ReplaceSubdomain(this HttpRequest request)
        {
            var urlReferrer = request.UrlReferrer.AbsoluteUri != null ? request.UrlReferrer.AbsoluteUri : string.Empty;
            // Get URl
            var url = request.Url.AbsoluteUri;
        #if DEBUG || APPS
            // Search local subdomain
            Regex child = new Regex(@"\b[0-9]?[.]?child[0-9]?");
            // if this request consist of subdomain
            if (child.IsMatch(urlReferrer) && child.IsMatch(url))
            {
                // select subdomain
                var matchUrlRef = child.Match(urlReferrer).ToString();
                var matchUrl = child.Match(url).ToString();
                // if subdomain are not equals
                if ((matchUrlRef != matchUrl))
                {
                    // single out link after local subdomain
                    var urlRefSub = urlReferrer.Remove(0, urlReferrer.IndexOf(matchUrlRef) + matchUrlRef.Length);
                    var urlSub = urlReferrer.Remove(0, url.IndexOf(matchUrl) + matchUrl.Length);
                    // validate link query after subdomain
                    // if different url query - replace subdomain
                    if (urlReferrer.Length > urlSub.Length)
                        return urlReferrer.Replace(urlRefSub, urlSub);
                }
            }
            return url;
        #else


            //  Check if before page are existsand subdomain are equls
            if (!SubDomainRoute.GetSubdomain(urlReferrer).Equals(SubDomainRoute.GetSubdomain(url)))   
                // if subdomain really exist for "child of clinic"
                if (SubDomainRoute.GetSubdomain(urlReferrer).Contains("child") 
                        && SubDomainRoute.GetSubdomain(url).Contains("child"))
                    return url.Replace(SubDomainRoute.GetSubdomain(url),
                                                           SubDomainRoute.GetSubdomain(urlReferrer));
            return request.Url.AbsoluteUri;
        #endif
        }

抱歉,如果我分散您的注意力并花费您的时间-我自己找到了解决方案。

于 2013-02-06T08:27:46.183 回答
0

您如何在视图中创建链接(锚点)?如果您使用 ActionLink 方法,您可以编写一个包装器方法,例如 SubdomainActionLink,它会做同样的事情,但也会在 href 路径中插入“subdomain2”。如果您需要在代码隐藏中进行这样的重定向,只需获取当前请求 url 并替换子域号。

于 2013-01-31T12:06:28.457 回答