pillinetwork hesabınızla giriş yapın.

Metin Şeklinde URL Kullanma (ASP & IIS 6.0)

Artık hepimizin çok iyi bir şekilde bildiği bir durum var ki o da google'ın insanlar tarafından kolayca alşılabilecek yapıdaki URL (web adresleri) kullanılmamızı arzu ettiğidir. SEO (Search Engine Optimizations - Arama Motoru Optimizasyonu) kurallarından en değerlisi bile diyebiliriz. Bir örnek verecek olursak;

1
http://www.kodaman.org/bu-bir-deneme-adresidir.html

oysa çoğu sitede karşımıza şu görünümdeki adresler çıkar;

1
http://www.kodaman.org/makale.asp?makID=1471

ve doğal olarak google yukarıda verdiğimiz ilk örneği daha çok sevmektedir. Çünkü insanlar sayfamızı daha açmadan, ne ile ilgili olduğunu fark edebilirler.

klasik asp ve iis6.0 kullanarak bu işlemi kendi becerimizle yapacağız. Aksi halde iis'in, asp için URL'lere müdehale edebilmemize olanak verdiği özel bir yöntemi bulunmuyor. Kendi tekniklerimizle bizi baş başa bırakmayı daha uygun görmüşler.


Bu işi yapabilmenin ana mantığı "404" hatasını işlemekte yatıyor. iis direkt olarak, URL düzenleme desteği sunmuyor demiştik ama oluşması muhtemel hataları yönetebilmemize izin veriyor. Yani web sitesi sahipleri örneğin önceleri kullandığı bir sayfayı sonradan kaldırdığında, kaldırılan sayfaya gelen ziyaretçilerine kendi tasarımlarını ekledikleri özel hata sayfalarına yönlendirebilsinler diye bu özellik iis'e dahil edilmiş.

Şimdi esas senaryoyu verelim. Adresinizin şuna benzer bir şey olmasını istiyorsunuzdur;

1
www.siteadınız.com/eklediginiz_bir_yazi

Suya sabuna dokunmadığınızda, bir ziyaretçi bu linke tıklayacak olursa iis, derhal "404 - Aradığınız sayfa bulunamadı" hata sayfasını gönderecektir.

Ama daha önce dedik ya, biz istediğimizde iis, 404 durumu oluştuğunda standart hata sayfasını göndermek yerine bize ait olan başka bir asp dosyasının içeriğini işleyip yollayabiliyordu! İşte gelin şimdi bu yönledirmenin nasıl yapıldığına bakalım..

\
ben resimde genel bir ayar (yani iis'te barınan tüm siteler için özel yönlendirme) seçtim ama siz sitenizin barındığı klasörü bulup ona sağ tıklayarak özellikler yolunu seçin!

\
Yukarıdaki resimde "Özellikleri Düzenle" düğmesine tıkladığınızda aşağıdaki pencere gelecektir.

\
Resimde gördüğünüz gibi alanları düzenledikten sonra, yukarıda seçtiğiniz sitenizin dizininde bir adet boş asp dosyası oluşturmalısınız. URL alanına ne yazmışsanız oluşturacağınız boş asp dosyanızın ismi de o olmak zorunda!

Bu işlemleri yaptıysanız artık sunucunuzda barınmayan bir dosya, yol, dizin talep edildiğinde, az önce ismini verdiğiniz asp dosyanızın içeriği işlenerek ziyaretçilere hata sayfası niyetine yollanacaktır. Fark ettiğiniz gibi artık statik bir html dosyasına değil dinamik bir asp dosyasına sahipsiniz.

Senaryomuza devam edelim. Ne demiştik, sunucumuzda bulunmayan bir adres yazıldı ve iis ziyaretçiye bizim özel asp dosyamızın içeriğini yolladı! Ama unutmayın bu bildiğiniz gibi bir yönlendirme değil! Asp kodlayanların aşina olduğu response.redirect'i yaptığımızda yönlendirilen sayfanın adresi adres çubuğunda görünürdü. Ama durum burada farklı. Ziyaretçi nasıl bir url yazmış olursa olsun (domain alanı tabiiki de sitemizin domaini olacak, bizim anlattığımız kendi alan adımızdan sonra / ile ayrılan kısım) özel asp dosyamızın html-css-javascript içeriğini görmekle birlikte adres çubuğunda özel asp dosyamızın adresi veya dizini görünmez. Tıkladığı - yazdığı adres ne ise o görünür.

Artık özel asp dosyanıza kodlar eklemek için açma zamanı geldi. Şimdi dosyanıza;

1
request.ServerVariables("SCRIPT_NAME")

kodunu ekleyin ve internet tarayıcı programınızın adres satırına sitenizin adresi/karman_corman_birseyler.LAZ yazdığınızda (böyle bir dizininiz, dosyanız olmadığı sürece) göreceksiniz ki hata almak yerine tertemiz beyaz bir sayfada, adres çubuğuna yazdığınız url'yi göreceksiniz. Ha! Böyle bir dizininiz, dosyanız varsa özel asp sayfanız devre dışı kalacaktır. Doğal olarak sağladığı özellikler de devre dışı kalacaktır.

Artık gerisi sizin işiniz. Makalenin anlatım alanı bu kadardı. Yani url'yi artık değişkenlerinize alabildiğinize göre kesin, biçin, veritabanına yazın veya orada aratın.

Eşleşen kayıtlarınız olduğunda bir yerlere yönlendirmeden (!) ilgili bilgileri ekrana gönderen diğer asp sayfanızı, özel asp sayfanız içerisinde "server.Execute('içerik_üreten_sayfanız.asp')" şeklinde çalıştırmanızı tavsiye ediyorum. Zira içerik üreten sayfanıza .redirect ile gitmeniz google'ın canını sıkar. Google örümcekleri yönlendiren sayfaları sevmezler!! Kaş yapayım derken göz çıkarmış olursunuz.

Ama şunu unutmayın ki artık elinizde "sayfa bulunamadı" hatası kalmadı! Yani özel asp sayfanızda bu durumu kendiniz yakalamak zorundasınız. Aksi halde kullanıcılarınız kimi zaman boş-beyaz sayfalara bakacaklardır.

/* lazaronnie yazdı. 19 Mart 2009 13:30. 10 yorum var */

Yorumlar

Nacizane fikrim IIS 'de ki yaptigin degisiklikten sonra ASP ile de devam etmendir. Böyle konu havada kalmis biraz. ServerVariables("SCRIPT_NAME") ile neyi okudu nasil kullanmasi gerek. Orta ve ileri düzey ASP yazarlar zaten bu söylediğini bilmekte. Başlangıc düzeyindekiler ise bu bilgileri yeterli göremeyeceklerdir. Istersen birazdaha aciklayabilirsin.

Saygilar.

aslında bu tarz bir şey için konu başlıklarının uygun seo şekle çevrilip vt de kaydedilmeli ve link olarak da o seo başlık verilmelidir. bakınız wordpress örneği.

evet havada kalan kısımları da yorumlardan tamamlamak niyetindeyim ki yorum alanları da bir işe yarar hale gelsinler..

request.ServerVariables("SCRIPT_NAME") komutunu hangi asp sayfası içinde yazar isek yazalım bize adres çubuğundaki url'yi döndürecektir! Ancak parametrelerden ayrıştırılmış olarak döndürür.

Mesela şöyle bir url'niz olsun;

1
www.adres.com/deneme_yazisi_1_2_3?KodNo=213123673863187236

Açıklamasını yaptığımız kodun bize döndüreceği değer yukarıdaki url için;
1
www.adres.com/deneme_yazisi_1_2_3

olacaktır. Yani "KodNo" isimli değişkeni okumak için request.QueryString("KodNo") komutunu kullanmanız gerekmektedir. Bu komutun döndüreceği değer ise;
1
213123673863187236
olacaktır.

Gerisi sizin tasarrufunuza kalmıştır. kolay gelsin...

/* if life="" then call BatsinBuDunya() */

radien bahsettiğin güzelliğin asp ile elde edilebilmesi için makalede anlattıklarımın yerine getirilmesi ön koşuldur.

Dediğin gibi biraz püf noktası vermeye çalıştım yer yer. Google bahsettiğin adresleri sever gibisinden telkinler:)) Ama makalenin konusu olmadığından veritabanına kaydetmedir, okumadır sadece yüzeysel değinip geçtim.

İşin bu kısmı script coder'a düşüyor.

/* if life="" then call BatsinBuDunya() */

bu yöntemle php de seo yapmaya çalıştım fakat olmadı index.php/hedehöde
şeklinde oldu

araştıran var mı? Neden illaki klasör şeklinde yapıyoruz?

1
www.site.com/deneme-yazisi

yerine
1
www.site.com/sayfa.asp?deneme-yazisi

şeklinde olmasın?

Sonuçta adres alanında anlaşılır insancıl ifadeler var? google bunu ayırt etmez mi?

ne kolaylığı olur derseniz, bir de seo için veritabanı bağlantısıydı sorguydu uğraşmayız. mesela

1
www.site.com/sayfa.asp?23-deneme-yazisi

böyle bir url kullanıp, ID türünden kod numalaralarını link ile taşıyabiliriz!

bir denemek lazım :))

/* if life="" then call BatsinBuDunya() */

Yöntemi aşağı yukarı anladım, ama bu yöntemi kullanarak bir sayfadan başka bir sayfaya veri aktarımının nasıl yapılacağını çözemedim.

Diyelim ki, bir ürün kategorisinde 15 tane ürün var. urunler.asp ilk olarak 5 ürünü listeleyecek, kullanıcı sayfanın altında bulunan bir "ileri - geri" butonlarını kullanıp , ileri butonuna tıkladığında, urunler.asp sonraki 5 ürünü listeleyecek.

urunler.asp?kayit=1 ' ilk sayfa URL'si
urunler.asp?kayit=5 ' ikinci sayfa URL'si


ilk tıklandığında kayıtları 1 den başlayıp listeliyor. İleri butonuna tıkladığında 5. kayda konumlanıyor ve sonraki 5 ürünü listeliyor.

Bu değişkenleri nasıl maskeleyebiliriz?

/* a piece of developing, a vial of graphic.. */

benim tavsiyem sadece yönlendirme işlerine bakan bir sayfa oluşturmalısınız ve 404 yönlendirmesini bu özel sayfaya göre ayarlamalısınız.

Şimdi tam bu noktada olan nedir? Artık web sitenizde bir sayfa bulunamazsa hata verme olayı bitmiştir. Bunun yerine artık sizin özel yönlendirme sayfanız vardır.

Bu durumda tek komut yolu url oluyor. Bu nedenle özel sayfanızda öncelikle url'den gelen bilgileri almalısınız.

Mesela sitenizin bir yerinde bir link yarattınız ve adresi de http://www.site.com/urunler/5 olsun. Sitenizde böyle bir dizin olmadığı için server hemen özel yönlendirme sayfamızı çalıştıracaktır.

Öyleyse bize düşen url'yi bir değişkene çekmektir. (bunu nasıl yapacağınızı bildiğinizi varsayıyorum) Pekii değişkene çekince ne olacak?

Bundan sonra url'yi ayrıştırmanız gerekmektedir. Mesela / işaretini baz alıp split ile bölerek bir array oluşturmak ve arrayın 3. elemanını kontrol etmek bize "urunler" sonucunu döndürecektir.

Genel anlamda bir if else bloğuna bu değişkeni yollamalıyız. Bu koşul bloğunda ise mesela "urunler" geldiyse "urunler.asp" yi çalıştıracağız mantığını kurdurabiliriz. Arrayın 4. elemanı da bu durumda kod numarası içermelidir. Bunu da rakammı değil mi kontrol ettikten sonra yeni linkimizi "urunler.asp?id=5" şeklinde yeniden oluşturmalıyız.

Peki sonra ne olacak? Burada çok önemli bir noktaya dikkat çekmek istiyorum. Bunu makale içinde de belirtmiştim. İşleme sokulacak sayfayı yukarıda anlattığım şekilde tespit ettik diyelim. Peki işleme nasıl sokacağız?

Çok çeşitli yollarımız var aslında. Ancak en tehlikelisi redirect kullanmaktır. Çünkü böyle bir durumda ziyaretçiler http://www.site.com/urunler/5 şeklinde bir adrese gitmeyi umdukları halde linklerde bu görüntüyü gördükleri halde http://www.site.com/urunler.asp?id=5 adresine yönleneceklerdir. Tamam bu durum çoğu zaman insanları sıkıntıya sokmaz. Fark bile etmez çoğumuz ama google için aynı durum söz konusu değildir.

Google politikalarına göre yeniden yönlendiren web siteleri ağır cezalara çarptırılırlar. Bu nedenle kesinlikle redirect kullanmamalıyız. Peki çözümü nedir?

Çözümü basit. İşleme konulacak gizli sayfamızı özel yönlendirme sayfamıza gömerek çalıştıracağız. Bunun için ise aslında 3 güzel yöntem mevcur klasik asp için ancak ben en çok bilinen yöntemi vermek istiyorum. Diğer pek bilinmeyen yollar bana saklı kalsın istiyorum :))

Bahsettiğim çalıştırma yolu server.execute metodudur. Şöyle ki; server.execute("urunler.asp?id=5")

Bu kadar basit işte. Kullanıcılar hiç http://www.site.com/urunler/5 adresinden ayrılmadan http://www.site.com/urunler.asp?id=5 adresinin döndürmüş olduğu sonuçları göreceklerdir ve muhtemelen Google ile de gül gibi geçinip gideceksinizdir.

iyi çalışmalar.

/* if life="" then call BatsinBuDunya() */

Aynı işlemi Server.Transfer ile yapmaya çalıştığımda IIS de sorun yaşadım. Göreceli adres kullanmam gerektiği şeklinde bir hata döndürdü IIS.

Server.Execute ile deneyeceğim hemen..

/* a piece of developing, a vial of graphic.. */

"url'yi bir değişkene çekmektir." Bildiğimizi varsayıyoruz da ben bilmiyorum php de bunu nasıl yapabiliriz fikir verebilir misiniz ?

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork