ریدایرکت دامنه  به 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);

 

تگ‌ها
اشتراک
2 نظرات
  • عکس پروفایل محمد راداني در سایت باگتو
  • |
  • ارسال شده توسط : محمد راداني
  • |
  • زمان : 1398/11/23

تشكر مطلب كاربردي بود


  • عکس پروفایل نيما در سایت باگتو
  • |
  • ارسال شده توسط : نيما
  • |
  • زمان : 1398/11/20

سلام براي ريدايركت كردن url به https چه كدي بايد بنويسيم؟



برای ارسال نظر باید وارد حساب کاربری خود شوید
ورود به حساب کاربری ثبت نام