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.

  • http://www.trancelisten.com Ahmet ATAY

    Emeğinize sağlık güzel paylaşım, bu konu hakkında bir çok anlatım var ama sizinki kadar açıklayıcı olanına rastlamadım. Veri tabanı sorgulamalarınıda anlatıcakmısınız acaba?

  • http://h apoStyLEE

    Çok teşekkür ederim. Veri tabanı sorgulamaları derken tam olarak neyi kastettiğinizi anlayamadım, açıklarsanız sevnirim :)

  • Harun KARADAG

    ISS de ufak bir ayar daha gerekiyor. kullanıcı açısından önemsiz sunucu açısından önemli. LOG ROTATION u kapatın. çünkü bütün sayfalar ulaşılamayan yani olmayan sayfalar olarak işleniyor ve devasa bir error loguna sahip oluyorsunuz :) bi süre sonra sunucu “bana bi haller oluyoo” demeye başlıyor. tabi bu tasarımcı yada koder i ilgilendiren bi konu değil. kendi yonetimizde bir sunucunuz varsa bunu dikkate almanız lazım.
    ikinci bir konu ise HATA SAYFALARI 400 sayfa bulunamadı hatasını kullanmak yerine başka bir yontemin kullanılabileceğini unutmamak gerekiyor.

    Zira sayfalama yapmak gereken durumlarda ve birden çok querystring ile gelen verilerde 8 veya formdan post ediyorsanız” 404 sayfanız uzayıp gidecektir.

    veritabanımızda 1000 kayıt olsa ve biz bunları sayfalara bölersek olay biraz karmaşıklaşıyor. burada SPLIT fonksiyonunu kullanarak 8 istediğimiz karakterlerden sonra bölme yapmak ve replace ile bu karaterleri / a cevirim sanki dizin gibi göstermek ) gerekecek

    yani iş uzadıkça uzuyor.

    google amcamız DOSYA NİTELİĞİNE göre bu işi yapsaydı 404 çözüm olmazdı. demekki dosya uzantısını veya dosya türünü okumuyor. adres etiketini kontrol ediyor.

    SELECT CASE ve include ile bu olayı hiç sunucumuzun ayarlarına dokunmadan çözebiliriz

    Buyrun ip ucu. geliştirin

    default.asp mizin içine gelmesini istediğimiz sayfayı çagırmak için bir sayfa oluşturup (sayfasec.asp mesela ) bu sayfayı include edelim. ben querystring için HK kullandım. dikkat edeceğimiz tek şey linklerde case ile çagrılacak querystringi en sona yazacağız.

    http://www.falanca.com/?Kat=12&SubkAT=3334&Dil=TR&HK=GOOGLEAMCAKELIMESI.HTML

    (Bütün olay default.asp de döneceği için / tan sonra default.asp ye gerek yok. sayfa include ediyoruz site içine. çerceve kullanmakistemeyenler içinde case tavsiye ederim.

    < % HK = Request("HK") & ""%>< % Select Case HK %>
    < % Case ""%>
    < % Case "ASPDersleri.HTML"%>

    < % Case "GOOGLEAMCAKELIMESI.HTML"%>

    < % ' bi güzellik daha. query string ile sql injeksiyon yapmaya çalışan bi lamer olmayacak bir sorgu gonderirse Case Else %>
    < % End Select %>

    faydalar. bazen syfayı farklı kaydetten kaydedemiyorsunuz. ( sırrını çözemedim. bazen kaydediyor ama istisna ) bir kilit koyup birde kaynagı görüntülemek için iki stır JS kullanırsanız %50 kod güvenliği
    site ikide bi hata sayfasına gidip gelip sunucunun canına okumayacak.

    esas dosya adları ( asp dosyaları ) asla bilinemeyecek

    ufacık ama çok önemli bi seo meselesi

    google sabit sayfa muhabbetinden önce TITLE ye önem veriyor

    < %=sayfaicerigi%>

    her sayfaya ayrı bir başlık koyarsanız ( aranma ihtimali yuksek ve 25 karakterigeçmeyen ) aramada %70 performans diyebilirim. sayfaicerigi değişkenini veritabanında vs çagırabilirsiniz.

  • http://sa apoStyLEE

    Güzel bilgileriniz için teşekkürler. Özellikle LOG ROTATION kısmı çok iyiydi ;)

  • http://www.dijitalbayi.com gökhan gümüş

    kendi sitene yaptığın gibi bi tane örnet default asp dosyası paylasabilirmisin. default olmasada olur dosyanın ismi :)

  • fikret

    merhaba
    windows 7 kullanıyorum.
    iis7 de söylediklerinizi yaptığımda kilit ihlali diye uyarı veriyor ve işlemi gerçekleştirmiyor.
    b.sayarımda herhangi bir kullanıcı adı vs gibi şifre yok
    bunu nasıl çözebilirim?
    daha hiç bir seo lu sayfa çalıştırabilmiş değilim maalesef
    teşekkürler iyi çalışmalar

  • Arafa Karaçelebi

    Valla Harun kardeşim olayı çözmüş maşallah seo uzmanı gibi yazmış.. Dediklerinin çoguna katılıyorum.. Aslında bende söylemek istediğim okadar şey varki yazmaktan nedense nefret ediyorum.. Ama gerçekten googlede bulunabilirlik açısında seodaki sef yöntemi es geçilmemeli titleninde önemi büyük keywordslarında descriptionlarında pagerank değerininde site geçmişininde uzayıp gidiyor bunlar googlede bir algoritmada yorumlanıyor bu algoritma googlenin keyfine göre ikide bir yenileniyor değişiyor felan filan ama işte bun algoritmada en büyük % ye sahip olan seodaki sef yöntemidir.. Hiç beceremiyorsan bunu kur wordpress bak işine en azından siten milyonların içinde kaybolup gitmez..

  • http://www.iyinetfrmtrtrkygnclr.com/ iyinet frmtr trkygnclr

    Çok güzel bir anlatım olmuş. Ayrıca Harun beye ekelemelerinden dolayı teşekkür edrim.
    İyi çalışmalar.

  • metin set

    merhaba ben asp de sef olayını yapmaya calısıyorum.. fakat hicbiryerde kategoriler ile duzenlenmis bir veri tabanlı ornek bulamadım bu sekilde bir calısma yapıp bizler ile paylasırsanız cok sevinirim… tesekkurler

    • apoStyLEE

      Merhaba, ilginize teşekkür ederim fakat affınıza sığınarak, böyle bir örneği şu aralar yapıp paylaşmam çok zor :S

      • Metin SET

        tesekkurler sağlık olsun.. :sad:

  • yusuf

    anlatım için teşekkürler benim bi sorum var ben kendi araştırma ve çabalarımla bu sistemi bi sitede kurdum splitlerle ayrımı yapıp veritabanından veri de çektim localhostta herşey istediğim gibi ancak siteyi servera upload ettiğimde adres çubuğuna örneğin a yazdığımda veritabanından a’nın karşılığını çekmesi gerekio ancak serverda adres çubuğuna a yazdığımda 404.aspye yönlendirio adres çubuğunda da a diil 404.asp yazıo 404ün içine
    yazdığımda boş bi sayfa açılıyo

  • yusuf

    adres çubuğunda da a diil 404.asp yazıo 404ün içine

    yazdığımda boş bi sayfa açılıyo

    kodların olduğu bölüm çıkmadı o yüzden ekleme yaptım kalabalıklık yaptıysam kusura bakmayın

  • Pingback: Asp ile Seo | ASP ile SEO()

  • Pingback: Asp ile Seo()

  • Mehmet Yaman

    arkadaşlar kod bloğu aşağıda
    istediğim;
    http://www.siteadi.com/product/knife/1-deneme.html
    Bu konuda yardımcı olabilecek biri var mı?