ریدایرکت دامنه به non www و www در asp.net core

ریدایرکت دامنه  به non www و www در asp.net core
فهرست مقاله [نمایش]

    چرا باید از دامنه بدون www  استفاده کنیم؟

    مهمترین دلیل برای حذف www به دامنه یا افزودن آن به دامنه رعایت اصول سئو است زیرا  یکی از قوانین فنی سئو این است که هر مطلب باید دارای یک لینک باشد. به دو url زیر توجه کنید.

    1. https://bugeto.net/
    2. https://www.bugeto.net/

     

    هر دو url یک صفحه را باز می کنند ولی موتورهای جستجو این دو را لینک های مختلفی در نظر  می گیرند که یک مطلب را نمایش می دهند. اگر ما چندین url داشته باشیم که یک محتوا را نمایش بدهند موتورهای جستجو برای ما نمره منفی در نظر می گیرند که باعث می شود در نتایج جستجو جایگاه پایین تری داشته باشیم.

       

       تفاوت استفاده از www و nonwww

    تفاوت استفاده از www و nonwww چیست؟

    استفاده از www در دامنه

    اگر سایت شما با www بالا بیاید کوکی هایی که توسط مرورگرها ذخیره می شوند برای تمامی ساب دامین ها هم قابل استفاده است و معمولا سایت های بزرگی که که دارای تعداد زیادی ساب دامنه هستند از www در سایت خود استفاده می کنند.

    استفاده از nonwww در دامنه

    اگر www را از دامنه خود حذف کنید مرورگرها برای هر ساب دامنه کوکی های جداگانه را ذخیره می کنند و ممکن است در برخی از سناریوها این روش ناکارآمد باشد.

     

    چگونه www را از دامنه حذف  کنیم؟

    برای حذف www در asp.net core باید از AspNetCore.Rewrite استفاده کنیم. برای این منظور یک کلاس با نام NonWwwRule  به پروژه خود اضافه کنید و کد زیر را در آن بنویسید.

     public class NonWwwRule : IRule
        {
            public void ApplyRule(RewriteContext context)
            {
                var req = context.HttpContext.Request;
                var currentHost = req.Host;
                if (currentHost.Host.StartsWith("www."))
                {
                    var newHost = new HostString(currentHost.Host.Substring(4), currentHost.Port ?? 80);
                    var newUrl = new StringBuilder().Append("http://").Append(newHost).Append(req.PathBase).Append(req.Path).Append(req.QueryString);
                    context.HttpContext.Response.Redirect(newUrl.ToString(), true);
                    context.Result = RuleResult.EndResponse;
                }
            }
        }

    سپس در فایل   startup.cs باید از این کلاس استفاده کنیم.

                var options = new RewriteOptions().AddRedirectToHttpsPermanent();
                options.Rules.Add(new NonWwwRule());
                app.UseRewriter(options);

    چگونه www را به دامنه اضافه کنیم؟

    برای افزودن www به دامنه خود یک کلاس دیگر به نام RedirectToWwwRule به پروژه اضافه کنید و کد زیر را به آن اضافه کنید.

     public class RedirectToWwwRule : IRule
        {
            public virtual void ApplyRule(RewriteContext context)
            {
                var req = context.HttpContext.Request;
                if (req.Host.Host.Equals("domain.com", StringComparison.OrdinalIgnoreCase))
                {
                    context.Result = RuleResult.ContinueRules;
                    return;
                }
    
                if (req.Host.Value.StartsWith("www.", StringComparison.OrdinalIgnoreCase))
                {
                    context.Result = RuleResult.ContinueRules;
                    return;
                }
    
                var wwwHost = new HostString($"www.{req.Host.Value}");
                var newUrl = UriHelper.BuildAbsolute(req.Scheme, wwwHost, req.PathBase, req.Path, req.QueryString);
                var response = context.HttpContext.Response;
                response.StatusCode = 301;
                response.Headers[Microsoft.Net.Http.Headers.HeaderNames.Location] = newUrl;
                context.Result = RuleResult.EndResponse;
            }
        }

    سپس در فایل   startup.cs   از   کلاس  RedirectToWwwRule  استفاده می کنیم.

    var options = new RewriteOptions();
    options.AddRedirectToHttps();
    options.Rules.Add(new RedirectToWwwRule());
    app.UseRewriter(options);

     


    • نویسنده: احسان بابائی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران

    avatar
    محمد راداني
    1398/11/23
    تشكر مطلب كاربردي بود

    avatar
    نيما
    1398/11/20
    سلام براي ريدايركت كردن url به https چه كدي بايد بنويسيم؟