Merhaba arkadaşlar;
Bu dersimizde ASP de 404 mantığı ile url lerimize nasıl şekil vereceğimizi detaylı bir şekilde
işleyeceğiz. Asp öğrenmeye başlayıp da biraz ilerleyenlerin internette en çok aradıkları bilgilerden biri
asp üzerinde 404.asp sayfası ile nasıl işlem yapılacağıdır.
Şimdi öncelikle sizlere localhostta çalışmayı göstereceğim. Zaten localhostu internet ortamına
taşıyamıyorsanız, bu makaleyi saklayıp, asp de biraz daha ilerledikten sonra bu makaleye başvurunuz.
NOT: Bu makale orta ve ileri düzey asp bilgisi gerektirir.
Sistemde olması gereken özellikler:
IIS, text editörü (ben dreamweaver kullanacağım), xp pro, klavye, Mouse, monitör gibi ıvır zıvır şeyler

ASP de Kullanacağımız değişkenler:
Recordset, count, Access veritabanı, do, while, if, else, elseif, pagecount, pagesize, split vb.
NOT : Burada anlatılanlar asp ve Access veritabanı içindir. Msssql veya mysql de bazı kodlar
çalışmayabilir. Kodları kendinize göre uyarlamanız gerekebilir.
DERS BAŞLIYOR !
1. IIS yi ayarlama :
Başlat – Denetim Masası – Yönetimsel Araçlar – Internet Information Service (IIS)
Ağaç menüden “yerel bilgisayar” – “web siteleri” – “varsayılan web sitesi” seçilir. Varsayılan web
sitesinin üzerine sağ tıklanıp özelliklerden özellikler tablosu açılır.
Eğer asp ile ilgileniyorsanız her zaman c:\inetput\wwwroot klasörünü kullanmak pek verimli
olmayabilir. Özellikler tablosundaki üst kısımdaki sekmelerden Giriş Dizini ne tıklayıp, asp
dosyalarımızı koyacağımız klasörü değiştiriyoruz. Ben kendime göre E sürücümdeki 404 klasörümü
seçiyorum. Benim çalışma dizinim artık E:\404 dizinidir. Siz de kendinize göre burasını
ayarlayabilirsiniz.
Daha sonra yine aynı tabloda üstten Özel Hatalar sekmesine tıklıyoruz. Daha sonra 404 ü bulup çift
tıklıyoruz ve açılan pencereden ileti türünü URL, url kısmını da /404.asp şeklinde değiştiriyoruz. Siz
isterseniz 404.asp sayfasını değil de sayfayok.asp yi kullanabilirsiniz. 404.asp sayfasını kullanmaya
mecbur değilsiniz. Kendinize göre ayarlayın. O zaman /sayfayok.asp deyip tamam diyoruz ve
kaydediyoruz. Artık 404 hatalarını biz yönetiyoruz. Rahatlıkla kodlama işlemine geçebiliriz.
Artık ııs dizinimize dosyalarımızı oluşturmaya başlayabiliriz.
Öncelikle ben 2 tane klasör oluşturacağım. Bunlardan birincisi veritabanımızı içine koyacağımız; vt
klasörü ve daha sonra resimleri içine koyacağımız; rsm klasörü. Aslında bu yazıda resimlere değinmek
istemiyordum ama 404 mantığı ile çalışında resimlerde sıkıntı çıkabiliyor. O yüzden kısaca onu da
göstereceğim. 2 klasörü oluşturduktan sonra vt klasörünün içerisine veri.mdb adında bir Access
dosyası oluşturuyoruz. rsm klasörümüze de kisi.gif adında bir dosya koyuyoruz. Kendisi zipin içinde
yer alamaktadır ve 16 x 16 px ebatlarındadır. Ve ana dizinimize yani klasörlerimizin olduğu yere
baglan.asp, 404.asp, default.asp, inc_fonk.asp, hata.asp, isim.asp ve isimler.asp şeklinde 7 tane boş
dosya oluşturuyoruz.
Oluşturduğumuz dosyaların son halleri resimdeki gibi oluyor.
Önce veritabanımızı oluşturalım.
vt klasörümüzün içindeki veri.mdb yi açıyoruz ve tasarım görünümde bir tablo oluşturuyoruz.
İçerisindeki değerler;
id – otomatik sayı
isim – metin
soyisim – metin
daha sonra bu tablomuza tbl_isimler adını verip, id değerine birincil anahtar özelliği veriyoruz.
Tablomuz yukarıdaki gibi oluyor. Tablomuzun içerisine birkaç tane değer giriyoruz. Ben size 10 tane
isim girmenizi öneriyorum çünkü 404 mantığıyla sayfalamayı da göstereceğimden biraz fazla kayıt
olması gerekiyor. İsimlerimizi tablomuzun içerisine girdikten sonra gerisi kodlama kısmına geçiyor.
Önce baglan.asp dosyamızın içeriğini yazalım.
Baglan.asp içeriği
<%
Response.Buffer = True
set baglantim = server.createobject("adodb.connection")
baglantim.open "provider=microsoft.jet.oledb.4.0;data source=" &server.mappath("vt/veri.mdb")
%>
Ve kaydedip kapatıyoruz. Burada başka işlem yapmayacağız.
Şimdi inc_fonk.asp dosyamızı açıp içerisine şunları yazıyoruz.
<%
‘ burası da bize çalıştığımız sunucunun url adresini verecek. Mesela localhost veya siteismi.com
kısmını. Bunu urlleri oluştururken kullanacağız.
domain = Request.ServerVariables("server_name")
' burası eğer ana dizinde değil de başka bir klasörde çalışacaksak işe yarayacak. Mesela localhostta
değilde localhost/deneme_sitesi klasöründe çalışacaksak burayı = “/deneme_sitesi/” şeklinde
yapıyoruz.
scriptyolu = "/"
' url lerdeki Türkçe karakterleri temizleyeceğiz. Bu fonksiyonla.
Function cevir(data)
data = Replace (data ,"ı","i",1,-1,1)
data = Replace (data ,"ğ","g",1,-1,1)
data = Replace (data ,"ü","u",1,-1,1)
data = Replace (data ,"ş","s",1,-1,1)
data = Replace (data ,"ö","o",1,-1,1)
data = Replace (data ,"ç","c",1,-1,1)
data = Replace (data ,"I","i",1,-1,1)
data = Replace (data ,"Ğ","g",1,-1,1)
data = Replace (data ,"Ü","u",1,-1,1)
data = Replace (data ,"Ş","s",1,-1,1)
data = Replace (data ,"İ","i",1,-1,1)
data = Replace (data ,"Ç","c",1,-1,1)
data = Replace (data ,"Ö","o",1,-1,1)
data = Replace (data ," ","-",1,-1,1)
data = Replace (data ,".","-",1,-1,1)
data = Replace (data ,",","-",1,-1,1)
data = Replace (data ,"!","-",1,-1,1)
data = Replace (data ,"?","-",1,-1,1)
data = Replace (data ,"'","-",1,-1,1)
cevir=data
End Function
%>
inc_fonk.asp dosyamız da hazır. Şimdi gelelim default.asp dosyamızı düzenlemeye.
Default.asp sayfamız :
<!-- #include file="inc_fonk.asp" -->
<html>
<title>İlk 404 denememiz</title>
<head></head>
<body>
<p>Merhabalar;</p>
<p>Bu sayfamızda url leri siteismi.com şeklinde
göstermeyi göreceğiz. Tabiki burada biraz yapısal değişiklikler yapacağız.</p>
<p>Şimdi değerlerimizi anlatmaya başlayalım.</p>
<p>1. asp de ilk kullanacağımız değer split. split bizlere belirli bir metni belirlediğimiz yerlerden
bölmeye yarıyor. zaten bunun ne olduğunu artık az çok biliyorsunuzdur.</p>
<p>2. neyin nerede kullanılacağıdır. ben şöyle yapacağım.
<strong>domain</strong>/<strong>kategori</strong>/<strong>sayfa_numarasi</strong>/<strong
>degerin_id_numarasi</strong>-<strong>degerin_kendisi</strong>.html yani linkimiz şöyle olacak
: http://localhost/isim/1/3-ahmet-ozel.html .</p>
<p>aşağıdaki linklere bakarak nasıl olduklarını görebilirsiniz.</p>
<p><a href="http://<%= domain %><%= scriptyolu %>isimler/1">İsimlerin Toplu olarak ve
Sayfalanmış olarak Listelenmesini görmek için bu linke tıklayınız.</a></p>
</body>
</html>
Şekinde olsun.
Şimdi 404.asp sayfamızı bir düzenleyelim.
<!-- #include file="inc_fonk.asp" -->
<%
Set url_yigini = Request.ServerVariables("QUERY_STRING")
bolum = split(url_yigini,"/")
if bolum(3) = "" then
%>
<!-- #include file="default.asp" -->
<%
elseif bolum(3) = "isimler" then
%>
<!-- #include file="isimler.asp" -->
<%
elseif bolum(3) = "isim" then
%>
<!-- #include file="isim.asp" -->
<%
else
%>
<!-- #include file="hata.asp" -->
<%
end if
%>
Dikkatinizi çektiyse bir tane daha sayfa ekledik hata.asp diye. Eğer url bulunamazsa hata.asp sayfasını
açacak. Siz hata asp sayfasının içerisine ne istiyorsanız onu yazabilirsiniz. Ben böyle bir sayfa
bulunamadı yazdım.
Şimdi gelelim isimler.asp sayfamızı düzenlemeye. url miz http://localhost/isimler/1 şeklinde olacaktır.
buradaki 1 sayfa numarasını gösterecektir.
İsimler.asp
<!-- #include file="baglan.asp" -->
<!-- #include file="inc_fonk.asp" -->
<%
' yukarıdaki include komutu ile veritabanı bağlantımızı çektik
if bolum(3) <> "isimler" or IsNumeric(bolum(4)) = False then
' üst tarafta önce sayfaya doğru bir biçimde gelindi mi yani /isimler/ şeklindemi
' daha sonra da isimler/1 ki 1 in sayı olup olmadığı denetleniyor. eğer şartlar tutmuyorsa anasayfaya
yönlendiriliyoruz.
' değilse devam edeceğiz.
response.Redirect "http://"&domain&""&scriptyolu&""
else
set isim_listele = server.CreateObject("adodb.recordset")
isim_listele.open "select * from tbl_isimler order by id asc",baglantim,1,3
if isim_listele.eof then
response.write "Bu tabloda kaydedilmiş değer bulamadık !"
' tablo boş mu dolu mu ona baktık boşsa hatamızı yazdırdık değilse devam ediyoruz.
else
sayfa = bolum(4)
isim_listele.pagesize = 5 ' bir sayfada gösterilecek kayıt değeri kafanıza göre
değiştirin
isim_listele.absolutepage = sayfa
sayfalama=isim_listele.pagecount
For x=1 to int(isim_listele.pagesize)
if isim_listele.eof then exit for
' resimleri yayınlarken rsm/kisi.gif değil /rsm/kisi.gif şeklinde yazıyoruz. espirisi bu
sadece
response.write "<img src=/rsm/kisi.gif border=none><a
href=http://"&domain&""&scriptyolu&"isim/"&isim_listele("id")&"-
"&cevir(isim_listele("isim"))&"-"&cevir(isim_listele("soyisim"))&".html>"&isim_lis tele("isim")&"
"&isim_listele("soyisim")&"</a><br>"
' linkimizi oluşturduk. Linkimiz http://localhost/isim/1-erdem-arslan.html şeklinde oluşacak.
ve bir tane de <br> koyarak yan yana değil alt alta listeleme yaptık.
isim_listele.movenext : next
%>
<br /><br />
Sayfa : <%
For y=1 to sayfalama
if sayfa=y then
response.write "<a
href=http://"&domain&""&scriptyolu&"isimler/"&y&">["&y&"]</a> "
else
Response.write "<b><a
href=http://"&domain&""&scriptyolu&"isimler/"&y&">["&y&"]</a></b> "
end if
next
response.write "<br><a
href=http://"&domain&""&scriptyolu&">Anasayfa</a>"
end if
isim_listele.close
set isim_listele = nothing
' isim_listele recordsetimizi kapattık !
end if
' son end ifimizden sonra artık sayfanın çalışması lazım.
%>
İsimler.asp sayfamızda veritabanındaki isimleri her sayfada 5 adet olacak şekilde listeledik ve
veritabanındaki kayıtlara göre 5. Kayıttan sonra bir sonraki sayfaya gidebilecek şekilde
bağlantılandırdık. Ve son olarak artık isim.asp sayfamızı düzenlemeye sıra geldi.
İsim.asp
<!-- #include file="baglan.asp" -->
<!-- #include file="inc_fonk.asp" -->
<%
' yukarıdaki include komutu ile veritabanı bağlantımızı çektik
nesne = split(bolum(4),"-")
' bolum(4) değeri /1-isim-soyisim.html kısmına denk geliyor. buradaki bize - işaretinden önceki ilk sayı
lazım. onu da yine split ile yapıyoruz.
if bolum(3) <> "isim" or IsNumeric(nesne(0)) =false then
response.Redirect "http://"&domain&""&scriptyolu&""
else
set detay = server.CreateObject("adodb.recordset")
detay.open "select * from tbl_isimler where id = "&nesne(0)&"",baglantim,1,3
if detay.eof then
response.write "Bu böyle bir değer yok !"
' tablo boş mu dolu mu ona baktık boşsa hatamızı yazdırdık değilse devam ediyoruz.
else
%>
İsim Detayları
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="88"><strong>İsim</strong></td>
<td width="12"><strong>:</strong></td>
<td width="300"><%= detay("isim") %></td>
</tr>
<tr>
<td><strong>Soyisim</strong></td>
<td><strong>:</strong></td>
<td><%= detay("soyisim") %></td>
</tr>
</table>
<%
response.write "<br><br>Umarım dersimiz yeterince anlaşılmıştır. Sorunuz olursa
yazın diyeceğim ama bazen cevap veremeyebilirim. Çünkü çok fazla vaktim yok. ancak bu dersin bir
çok ihtiyacı karşılayacağından eminim. dersin başında da dediğim gibi asp den az anlıyorsanız, çok
anlayana kadar bu derse bakmayınız."
response.write "<br><a
href=http://"&domain&""&scriptyolu&">Anasayfa</a><br>"
response.write "<br><a href=javascript:history.go(-1)>Geri Dön</a>"
end if
detay.close
set detay = nothing
' isim_listele recordsetimizi kapattık !
end if
' son end ifimizden sonra artık sayfanın çalışması lazım.
%>
Bu sayfamızda da artık isimlerin detaylarını işledik.
404 mantığı aslında o kadar zor olan bişey değil tabiî ki url lerin nasıl oluşacaklarına siz karar
veriyorsanız. Tabiî ki bu .html olarak yazdırmanın en basit örneği.

Alıntı:
Erdem ARSLAN isimli bir arkadaştan. Kendisine Tşk Ederim.