Url Nasıl Kısaltılır

Selamlar;

Bugün aynı indiryada Google URL Shortener‘da olduğu gibi Url kısaltan bir web uygulaması yazacağız. Tabi bunu tamamen benim fikir ve hayal gücüme göre yapacağız. İzlediğim yola alternatif fikri olanlar lütfen paylaşmaktan çekinmesin.

Öncelikle kısaltılacak Url’in tutulacağı “Urls” tablosunu aşağıdaki gibi oluşturalım. Database’imizin adı da ShortUrl olsun. Arama işlemi ShortUrl’e göre yapıldığı için Primary Index ShortUrl’dir.

tblUrl

Solution’a bir DAL projesi eklenip, var olan Database üzerinden CodeFirst ile ilgili Poco ve DbContext nesneleri aşağıdaki gibi yaratılır.

Şimdi sıra geldi bir Mvc projesi yaratıp girilicek uzun url’i kısaltıp database’e kaydetmeye.

Öncelikle HomeController.cs’e aşağıdaki action yazılır:

RouteConfig.cs aşağıdaki gibi değiştirilir: Amaç sayfaya url girilmeden ilk gelindiğinde default olarak “Shorter” view’ına gelinmesidir.

Shorter

Shorter.cshtml: “shortenerInputText” input alanına kısaltılması istenen uzun “Url” girilir. “URL Kısalt” buttonuna basılınca “shorUrl()” function’ı ilgili kısaltılacak Url’i alıp “/Home/ShortUrl” action’ına post eder.

Öncelikle [A-Z] ve [0-9]  arasından random seçilecek 8 karakter nasıl oluşturulur onu inceleyelim.

Aşağıda GetRandomUrl() methodu belirtilen karakterler arasında Linq sayesinde “Enumerable.Repeat()” kullanarak random 8 karakter seçmektedir.

“ShortUrl()” methodu aşağıda görüldüğü gibi “GetRandomUrl()” methodu ile shortUrl üretilir. Eğer önceden böyle bir url üretilmiş ise “While()” döngüsü içinde unique bir url çekilene kadar işlem tekrarlanır. Daha sonra short url ve uzun olan gerçek url Database’e kaydedilir.

screen

Şimdi sıra geldi girilen kısa Url’i istenen gerçek url’e yönlendirmesine:

Öncelikle RouteConfig.cs’e aşağıdaki “RedirectLink” yolu eklenir.

Web.config dosyasına aşağıdaki “customErrors” tagı eklenir. Amaç örneğin “http://localhost:7461/xb84w3r8” şeklinde sayfaya gelindiğinde böyle bir route’a uyan kural olmadığı için hata sayfasına düşmesidir. Böylece RedirectLink action’ında gelen shortUrl’i “Request[“aspxerrorpath”]” parametresinden çekilerek alınır. Daha sonra bu shortUtl’e ait gerçek Url’i, Database’den çekilerek(301) permanent Redirect edilir ve sayfaya yönlendirilir. (301) redirect ile kalıcı bir aktarma yapılarak arama botlarının sayfa sayımında, gerçekte yönlendirilen sayfanın sayması sağlanır. Örnek olarak “http://localhost:7461/xb84w3r8” değil de gerçekte yönlendirilen “http://borakasmer.com” arama botlarınca sayfa gösterimi sayılmış olunur.

Web.config:

HomeController/RedirectLink:

Böylece geldik bir makalenin daha sonuna yeni bir makalede görüşmek üzere hoşçakalın.

 

Herkes Görsün:

Sevebilirsin...

2 Yanıt

  1. çağrı dedi ki:

    elinize sağlık .

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir