Asp.Net MVC 301 Seo Yönlendirmesi

Seo için www’sız isteklerde www’li haline çevirmek için aşağıdaki kodu kullanabilirsiniz. Tabii IIS6 sistemde önerdiğim, IIS7 de rewrite url ile yapılmasının daha doğru bulduğum yöntemdir.

Öncelikle ActionResult bir custom sınıf oluşturuyoruz.

    public class PermanentRedirectResult : ActionResult
    {
        private readonly string _url = string.Empty;

        public PermanentRedirectResult(string url)
        {
            this._url = url;
        }

        public override void ExecuteResult(ControllerContext context)
        {
            var response = context.HttpContext.Response;
            response.StatusCode = (int)HttpStatusCode.Moved;
            response.Status = "301 Moved Permanently";
            response.RedirectLocation = _url;
            response.End();
        }
    }

İşlem yapılacak Controller üzerinde OnActionExecuted fonksiyonunu override edip, FilterContext içindeki Result içeriğine oluşturduğumuz custom sınıfı vermeliyiz.

        protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (Request != null && Request.Url != null && !Request.Url.IsFile)
            {
                var authority = Request.Url.Authority;

                if (!authority.StartsWith("www"))
                {
                    var originalString = Request.Url.OriginalString;
                    originalString = originalString.Replace(authority, string.Format("www.{0}", authority));
                    filterContext.Result = new PermanentRedirectResult(originalString);
                }

            }
            base.OnActionExecuted(filterContext);
        }

IIS6 için hepsi bu kadar. 🙂 Eğer IIS7 kullanıyorsanız;

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^" ignoreCase="false" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^$" ignoreCase="false" negate="true" />
        <add input="{HTTP_HOST}" pattern="^www\." negate="true" />
        <add input="{HTTPS}s" pattern="^on(s)|" ignoreCase="false" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="http{C:1}://www.{HTTP_HOST}{URL}" />
    </rule>
  </rules>
</rewrite>

Bu kuralı kullanarak yönlendirme yapabilirsiniz.

This entry was posted in .Net, Asp.Net, Dersler, Visual C# .Net, VisualBasic.Net and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *