İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Hata(404) sayfası ile link yönetimi

M

Massacre

Misafir
Hani görmüşsünüzdür bazı sitelerde linkler klasör yapıları şeklindedir yada dosyaların uzantıları bildiğimiz uzantılara benzemez. Dosya uzantısı olayı normalde server tarafında halledilebilen bir olay olmasına karşın sizde hata sayfası yöntemini kullanarak servera söz geçiremeseniz dahi kendi uzantınızı kullanabilirsiniz.

Mesela bu sitenin dosya uzantıları .asp değil de .vbsturk olsa hoş olmaz mı? http://www.vbsturk.com/default.vbsturk yada http://www.aksu.web.tr/index.aksu gibi linklere sahip olabilirsiniz. Yada hiçbir dosya uzantısı kullanmayıp linklerinizi klasör yapıları şeklinde verebilirsiniz. http://www.vbsturk.com/konular/20

Bunun için yapılması gereken ilk işlem herhangi bir sayfa bulunamadığı durumlarda serverin istemciye gönderdiği 404 hata kodlu hata sayfasını kendi sayfamız ile değiştirmek. Bu işlemi eğer varsa hosting panelinizden yapabilirsiniz. Yada server yöneticisinden rica edebilirsiniz. Genellikle bu hata sayfasının değiştirilmesi için kullanılan yere "/default.asp" yazmanız gerekir. Veya siz "/404.asp" gibi bir dosyada kullanabilirsiniz. Ben default.asp'yi kullandığınızı varsayıyorum.

Bu işlemden sonra artık herhangi bir sayfa bulunamadığında sayfa bulunamadı hatası yerine karşınıza default.asp sayfanız çıkacaktır. Örneklerimizde kullanmak üzere linkimizin http://www.vbsturk.com/konular/20 olduğunu varsayıyorum. Adres satırına böyle yazdığınızda yada böyle bir linki tıkladığınız da default.asp sayfasına yönlendiniz. Bilmeniz gereken şey ise siz adres satırına böyle yazdığınızda http://www.vbsturk.com/default.asp sayfasına gitmezsiniz. Adres satırı aynı kalır, sadece bulunamayan sayfa yerine default.asp sayfası işletilir.

Bu durumda default.asp dosyanızda adres satırında query string şeklindeki bu adresi alıp bunun içinden 20 sayısını süzüp kullanıcımıza veritabanımızda ki 20 id numaralı konuyu göstereceğiz. Bunun için öncelikle Request.ServerVariables("QUERY_STRING") diyerek adres satırındaki tüm veriyi alıyoruz. Bu durumda elimize geçen veri 404;http://www.vbsturk.com/konular/20 şeklinde oluyor. Baştaki 404 sayfa bulunamadı hatasının kodu.

Adres satırında ki veriyi bu şekilde aldıktan sonra 20 değerini almak için sizinde tahmin ettiğiniz gibi bu değeri "/" işaretlerinden bölmemiz gerekiyor. Kod ile örnek verelim.

<%
strQuery = Request.ServerVariables("QUERY_STRING")

strDizi = Split(strQuery,"/")
%>



Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular"
strDizi(4) = "20"

Gördüğünüz üzere bize gereken id numarası dizinin 5 elemanı. (Diziler 0'dan başladığı için numarası 4)

Şimdi şöyle bir sorgu kuralım. Eğer gelen veriler arasında dizinin 4 elemanı "konular" ise id numarası verilen konuyu gösterelim. Değilse işlem yaptırmayalım.

<%
strQuery = Request.ServerVariables("QUERY_STRING")

strDizi = Split(strQuery,"/")

If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then

'Conn isimli veritabanı bağlantısı açılır
strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)

Else

'Diğer işlemler

End If
%>



İşte bu kadar basit. Siz strDizi(3) dizi elemanı ile gelen veriye bakarak değişik işlemler yaptırabilirsiniz.

<%

'Conn isimli veritabanı bağlantısı açılır

'Veri http://www.vbsturk.com/konular/20 şeklinde gelmiş olabilir.
If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then

strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)

'Veri http://www.vbsturk.com/makaleler/25 şeklinde gelmiş olabilir.
ElseIf strDizi(3) = "makaleler" AND IsNumeric(strDizi(4)) Then

strSQL = "SELECT * FROM MakalelerTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)

Else

'Diğer iþlemler

End If
%>


Birde değişik dosya uzantısı için örnek verelim.

Linkimiz http://www.vbsturk.com/konular.vbsturk?konu=20

Dosya uzantımızın vbsturk olduğunu görüyorsunuz. Siz bunun yerine .aspx yada .jsp gibi bir dosya uzantısı kullanıp ziyaretçilere web programlama da çağ atlamışsınız havası verebilirsiniz.

Öncelikle query bilgimizi alıp "/" işaretlerinden parçalayalım.

<%
strQuery = Request.ServerVariables("QUERY_STRING")

strDizi = Split(strQuery,"/")
%>



Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular.vbsturk?konu=20"

Gördüğünüz gibi üzerinde işlem yapacağımız değerimiz strDizi(3) dizi değişkeninde. Burada ? işaretinden sonraki kısımda ki değerleri alıp bunlara göre işlemleri bikaç yolla yapabilirsiniz. InStr() ile soru işaretinin nerede olduğunu bulur. sonra = işaretini bulur, bu 2 değer arasında ki veriyi Mid ile alabilirsiniz. Yada Split ile veriyi önce ? işaretinden sonrada = işaretinden parçalayabilirsiniz. Biz InStr() ve Mid() ile yapacağız.

<%
strVeri = strDizi(3)
intBaslangic = InStr(strVeri,"?")
intBitis = InStr(strVeri,"=")

strBolum = Mid(strVeri,intBaslangic+1,intBitis-intBaslangic-1)
%>




strBolum'un çıktısı "konu" olur. Birde konunun id numarasını alalım.

<%
strKonuID = Mid(strVeri,intBitis+1,Len(strVeri)-intBitis)
%>



Bölümün ismi ve konunun id numarası elimizde olduğuna göre yukarıdaki örnek gibi istediğiniz işlemi yaptırabilirsiniz.

Herkese kolay gelsin

Alıntıdır...
http://www.vbsturk.com
Yazan: Metin AKSU
 

SLaYeR

0
İyinet Üyesi
Katılım
28 Ocak 2006
Mesajlar
812
Reaction score
0
Konum
?
bunu bu kadar kod yazmadan iis den ufak bi ayarla yapılabilir istediğin uzantıyı ekleyip o uzantıyı hangi programın çalıştıracağını seçersen o uzantıda ister asp iste php olarak çalışır
tabi sadec hostu olanlar yapamazlar
 
M

Massacre

Misafir
Sunucularda , vps lerde işe yarayacağından burada paylaşmak istedim ayrıca bu yolla html uzantısıyla veya herhangi bir uzantıyla dinamik sayfaları ziyaretçilerinize göstermenize yarayabilir.
 

disconnect

0
İyinet Üyesi
Onaylı Üye
Katılım
1 Şubat 2005
Mesajlar
3,367
Reaction score
5
SLaYeR' Alıntı:
bunu bu kadar kod yazmadan iis den ufak bi ayarla yapılabilir istediğin uzantıyı ekleyip o uzantıyı hangi programın çalıştıracağını seçersen o uzantıda ister asp iste php olarak çalışır
tabi sadec hostu olanlar yapamazlar

Senden de böyle bir makale bekliyoruz o zaman
 

thereX

0
İyinet Üyesi
Katılım
23 Kasım 2005
Mesajlar
372
Reaction score
2
Paylaşımınız oldukça güzel fakat; bunları unix sunucularda yapabilir miyiz ? ben şuanda .htaacess ile dışarıdan bir kişinin sitemdeki bir image, dosya yada buna benzer bir içeriğe erişimini yasakladım ve mimetypes'ların yardımı ile .php dosyalarını artık kendi uzantım ile kullanabiliyorum fakat; benim asıl sormak istediğim konu şudur ki; biz bu içeriği örnek olarak; index.php'yi domain.com/index/git gibi nasıl yapabiliriz?
 

redbaron

0
İyinet Üyesi
Katılım
12 Mayıs 2006
Mesajlar
675
Reaction score
0
404 linkleme seo için yapılıyo zaten ve gerçekten faydalı
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst