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=aboutsubdomain2同様のページを見たいです。ユーザーをにリダイレクトしました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 に答える