• Car Blogger - SEO Specialist
  • Software Engineer
.NetCore'da URL Yapısını SEO Uyumlu Hale Getirelim
.NetCore'da URL Yapısını SEO Uyumlu Hale Getirelim
SEO

.NetCore'da URL Yapısını SEO Uyumlu Hale Getirelim

Yayın Tarihi: 23-Oct-2024

.NetCore web projelerinin bitiminde bir siteyi arama motorlarına uygun hale getirmek çok önemlidir. URL yapısı, arama motorlarının web sitenizi anlamlandırması ve indexlemesi için olmazsa olmazıdır. Bu yazımda .NetCore'da URL yapısını SEO uyumlu yapıya kavuşturacağız. 

Ana Sayfanızın bulunduğu Controller kısmında ana sayfa hangi alanda açılıyorsa bu kodu:

[System.Web.Mvc.Route("")]

[System.Web.Mvc.Route("anasayfa")]

Alt yazılar veya ürünler gibi kategoriye bağlı yazı sayfaları için bu kodu: 

[System.Web.Mvc.Route("Post/{baslik}-{id:int}")]

Kategori sayfası varsa bu kodu:

[System.Web.Mvc.Route("Kategori/{baslik}-{id:int}")]

Sabit sayfalar için ise bu kodu ilgili Controller'ın üst kısmına ekleyerek istediğiniz url parametresini ekleyebilirsiniz.

[System.Web.Mvc.Route("hakkimizda")]

Daha sonra AppStart içindeki RouteConfig classın içine bu kodu ekleyin:

routes.MapMvcAttributeRoutes();

Blog projenizin içine Filters klasörü oluşturup SeoTitleFilters adlı class oluşturun ve aşağıdaki kodu ekleyin.

namespace Blog.Filters
{    public class SeoTitleFilter : ActionFilterAttribute
    {
        private BlogManager bm = new BlogManager(new EfBlogDal());
        private CategoryManager cm = new CategoryManager(new EfCategoryDal());
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var routeValues = filterContext.RouteData.Values;
            var controllerName = routeValues["controller"].ToString();
            var actionName = routeValues["action"].ToString();
            var id = routeValues.ContainsKey("id") ? Convert.ToInt32(routeValues["id"]) : 0;
            var viewBag = filterContext.Controller.ViewBag;
            if (controllerName == "Home" && actionName == "Index")
            {
                viewBag.Title = "hasan can bozkurt";
                viewBag.MetaDescription = "Bu, ana sayfanın meta açıklamasıdır.";
            }
            else if (controllerName == "Category" && actionName == "BlogByCategory" && id > 0)
            {
                var category = cm.GetByID(id);
                if (category != null)
                {
                    viewBag.Title = category.CategoryName;
                    viewBag.MetaDescription = category.CategoryDescription ?? "Kategori hakkında bilgiler.";
                }
                else
                {
                    viewBag.Title = "Kategori Bulunamadı";
                    viewBag.MetaDescription = "Aradığınız kategori bulunamadı.";
                }
            }
            else if (controllerName == "Blog" && actionName == "BlogDetails" && id > 0)
            {
                var blogList = bm.GetBlogByID(id);
                var blog = blogList != null && blogList.Count > 0 ? blogList[0] : null;
                if (blog != null)
                {
                    viewBag.Title = blog.BlogTitle;
                    // HTML etiketlerini kaldırmak için StripTags metodunu kullanıyoruz
                    var content = StripTags(blog.BlogContent ?? string.Empty);
                    // Meta açıklamasını 160 karakterle sınırlıyoruz
                    if (content.Length > 160)
                    {
                        viewBag.MetaDescription = content.Substring(0, 160) + "...";
                    }
                    else
                    {
                        viewBag.MetaDescription = content;
                    }
                }
                else
                {
                    viewBag.Title = "Yazı Bulunamadı";
                    viewBag.MetaDescription = "Aradığınız yazı bulunamadı.";
                }
            }
            else
            {
                viewBag.Title = "Varsayılan Başlık";
                viewBag.MetaDescription = "Varsayılan meta açıklaması burada yer alır.";
            }
            base.OnActionExecuting(filterContext);
        }
        // HTML etiketlerini kaldırmak için yardımcı metot
        private static string StripTags(string input)
        {
            if (string.IsNullOrEmpty(input))
                return string.Empty;
            return Regex.Replace(input, "<.*?>", String.Empty);
        }
    }
}

Sorun yaşarsanız yorum kısmından paylaşabilirsiniz. Yardımcı olurum.

Yorumlar

Yorum Yapabilirsin