etil alkol rp satın al
chat eczaonline.com okey oyna gaziantep web tasarım

Hata(404) sayfası ile link yönetimi

M

Massacre

#1
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

Profesyonel
Katılım
28 Ocak 2006
Mesajlar
812
Beğeniler
0
Konum
?
#2
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

#3
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

Onaylı Üye
Katılım
1 Şub 2005
Mesajlar
3,367
Beğeniler
5
Yaş
44
#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

Profesyonel
Katılım
23 Kas 2005
Mesajlar
372
Beğeniler
2
#6
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?
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 1)

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. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır. Betcup Artemisbet Forum canlı bahis sohbet - - chat
Üst