Asp.Net Url Encode, Decode

Geçen gün bir projede url yi adres çubuğundan gönderip diğer taraftan da alıp yönlendirmem gerekiyordu. Normalde Server.HtmlEncode ve HtmlDecode ile gelen adresi sorunsuz bir şekilde gönderip almam gerekiyordu fakat & (ampersand) karakterinde problem oluştuğunu gördüm, sonradan diğer karakterlerde de sıkıntı olabilir diye aşağıdaki fonksiyonu yazdım. Kullanımı şu şekilde; Okumaya devam et Asp.Net Url Encode, Decode

ASP ile SEO

Merhabalar efendim, uzun bir zamandan sonra yeni bir makale ile tekrardan karşınızdayım. Bu yazımda ASP ile SEO (Arama motoru optimizasyonu) için gerekli olan en önemli işlemlerden olan linklerin yazı başlığı şeklinde uzantısının .html şeklinde olması olayını (SEF) kendimce anlatmaya çalışacağım. Bu ne için gereklidir dilerseniz önce bunu anlamaya çalışalım. Google bu konu hakkında şunu der; kullanıcı bir arama sonucunda yada bir yerde sitenizin içeriği hakkında bir link gördüğünde, linkten konunun içeriğini anlamalıdır.Olayın özeti budur. Bakınız bu site. Linkler; baslik-deneme-1-2.html şeklindedir. Burdaki .html uzantısı ise sayfanın sabit bir içerik olduğunu temsil eder. PHP ASP.NET gibi dillerde bu işlemi yapmak gayet basitken ASP gibi modası geçmiş bir dilde birazcık zahmetlidir. Birden fazla yolu vardır fakat bence en kolay şu şekilde yapılmaktadır. Sitemde ki yapıda aynen anlatacağım şekildedir.

Öncelikle asp sayfalarımızı yorumlayan programımız olan IIS e ufak bir ayar yapmamız gerekiyor. Bunun nedeni de şu; www.sitemiz.com/deneme.html diye bir istek olduğunda eğer böyle bir sayfa yoksa dizinimizde 404 numaralı hatanın sayfası çıkar ve Aradığınız sayfa bulunamadı gibisinden bir uyarıyla karşılaşırız. Bizim kuracağımız yapıda her başlığa ait bir .html dosyası olmayacağından bu duruma el atıp 404 uyarısı verildiğinde default.asp sayfamıza yönlendirme yapmamız gerekiyor. Sonrasında gerekli kodlarımızı yazıp veritabanı sorgulama işlemimizi sağlıklı bir şekilde yapıp kullanıcının ruhu bile duymadan istediği sayfayı istediğimiz şekilde kendisine sunacağız.

Denetim Masası\Yönetimsel Araçlar \ Internet Information Services (IIS) Yöneticisini çalıştırıyoruz. Şuandaki bilgisayarımda Windows Vista olduğu için IIS 7 üzerinden yönlendirme işlemini göstereceğim. Bu IIS 6 da ve farklı versiyonlarda değişiklik gösterebilir, fakat ufak bir araştırmayla 404 yönlendirmesini basit bir şekilde yapabilirsiniz.

IIS açıldıktan sonra sol taraftaki ağaç menüden Default Web Site yi tıklıyoruz. Sonrasında karşımıza çıkan ekrandan Hata Sayfaları simgesine tıklıyoruz.

Gördüğünüz gibi hata kodlarıyla birlikte hata olduğunda hangi sayfanın görüntüleneceği bir kısım geldi karşımıza. Bu ekrandayken direk sağ taraftaki Özellik Ayarlarını Düzenle linkine tıklıyoruz.

Normalde Ayrıntılı Hatalar seçili durumdadır, biz bunu Özel Hata Sayfaları olarak değiştiriyoruz.

Daha sonra bir önceki sayfada bulunan hata sayfalarından 404 numaralı hatanın üzerine çift tıklayıp Bu sitedeki bir URL’ i yürüt kısmına ister default.asp dosyamızı veya kendinizin belirleyeceği bir yorumlama sayfasının yolunu giriyoruz. Ben örneğimde default.asp kullandım, sizde olayı kavramak açısından bu ismi kullanın ilerde konuyu anladığınızda istediğiniz değişikliği rahatlıkla yapabilirsiniz ;)

Herşey bukadar basit arkadaşlar. Hemen wwwroot klasörümüzün altına deneme amaçlı bir aspUrl klasörü oluşturup içinede default.asp adında bir dosya oluşturuyor ve içine Response.Write “deneme” yazıyoruz. Tarayıcımızın adres satırına localhost/aspUrl yazdığımızda ekrana deneme yazısı çıkıyor. localhost/aspUrl/asdasdasd yazınca ne oluyor peki ? yine deneme yazısı çıkıyor. Nedenide hata olduğunda default.asp sayfamıza yönlen işlemini yapmamış olmamızdır. Buraya kadar sorun yoksa burdan sonrası yaratıcılığımıza kalıyor. Örneklerimize hemen geçelim.

Öncelikle adres satırında yazan yazıyı alıp işlememiz gerekiyor. Bunun için ben Request.QueryString komutunu kullanacağım.

Default.asp sayfamı aşşağıdaki gibi değiştirip olanları gözlüyoruz.

<%
gelenAdres = Request.QueryString
response.write gelenAdres
%>

Adres çubuğuna http://localhost/aspUrl/seo-deneme-linki yazdığımda sayfamızda 404;http://localhost:80/aspUrl/seo-deneme-linki şeklinde bir çıktı göreceğiz. Yaşasın diyoruz çünki herşey istediğimiz gibi ilerliyor. Şimdi biraz kod yazmaya başlıyoruz.

Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz.

<a href="hakkimda">hakkımda</a> <br />
<a href="seo">seo</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;<a href="http://localhost:80/aspUrl/%22,">http://localhost:80/aspUrl/",</a>"")  ' burada baştaki istemediğimiz kısımdan kurtuluyoruz ve elimize sadece  istediğimiz kısım geliyor.
if gelenAdres="hakkimda" Then ' eğer adres satırına hakkimda yazarsak burası
call hakkimda
elseif gelenAdres="seo" Then ' eğer adres satırına seo yazarsak burası  çalışıyor.
call seo
end if
Sub hakkimda
response.write "Burası Hakkımda"
End Sub
Sub seo
Response.Write "Seoooo Seooooo"
End Sub
%> 

Bu kısımdan sonrası yaratıcılığa kalıyor, gelen adresi istediğiniz gibi parçalayıp işleyebilirsiniz. Mesela Kategori/UrunAdı şeklinde olan bir link yapısını nası yapabilirdik bunu inceleyelim.

Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz. Burda geçen Split fonksiyonunu daha önce şurada anlatmıştım.

<a href="Anakart/Islemci">Kategori / Ürün Adı</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;http://localhost:80/aspUrl/","")
if not gelenAdres="" Then ' gelenAdres değişkenimiz boş değilse aşşağıdaki  işlemleri yapıyoruzki, sayfamız hata vermesin.
gelenAdresParcala = Split(gelenAdres,"/") ' / karakterini  split edip isteğimiz olan birinci ve ikinci bölümleri alıyoruz. (Anakart/Islemci)
response.write gelenAdresParcala(0) &amp;"<br />" ' birinci  dizide Anakart
response.Write gelenAdresParcala(1) ' ikinci dizide de  Islemci geliyor.
end if
%>

İşte bu kadar basit arkadaşlar. Korkulacak en ufak bişiy bulunmuyor. Zaman bulursam Veritabanı işlemlerine bir örnekle bukonuyu sonlandıracağım. Anlamadığınız noktaları sorabilirsiniz. Herkese kolaylıklar dilerim.