.htaccess konuları [Kapanış]
Yaklaşık 1 aydır süren “.htaccess konuları” yazı dizimizin sonuna geldik. Bu yazı dizisinde pek çok şeyden detaylıca bahsetme fırsatına sahip olduk. .htaccess dosyalarını nasıl oluşturabileceğimizden, sunucuya nasıl yükleyebileceğimizden başladık, sitemize gelen ziyaretçileri nasıl engelleriz’e kadar geldik
Bu kapanış yazısında da isterseniz yazıları bir daha hatırlayalım:
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
.htaccess dosyaları ile yapılabileceklerin sayısı bunlardan elbetteki çok daha fazla ama en sık kullanılan ve gereken yöntemler bunlar. Daha ileri seviye methodları da zaman bulabilirsek bir süre sonra burada değinebiliriz.
Yazılardan en iyi şekilde yararlanabilmeniz dileğiyle.
İyi okumalar
.htaccess konuları [işaretçi siteye göre engelleme]
htaccess dosyası ile yapılabileceklerden biri de ziyaretçiyi, geldiği yere göre engellemek.
Son bir kaç yazıdır .htaccess dosyası ile hep engellemelerden bahsediyoruz aslında, içeriğe erişilmesini bu kadar çok istemiyorsak neden içeriği internette yayınlıyoruz o halde diye sorabilirsiniz. Bir anlamda yerinde bir sorudur bu, ancak bazen işaretçi siteye göre ziyaretçilerin sitenizi ziyaret etmesini engellemek isteyebilirsiniz.
Örneğin hurriyet.com.tr adresindeki bir bağlantıya tıklayıp gelen ziyaretçi kabul etmeyebilirsiniz, bunu yapmanızın tek sebebi oradan gelen ziyaretçiler sizin trafiğinizi aşırı şekilde tükettiler ve paylaşımlı sunucuda yer alan sizin sitenize uyarı geldi sistem kaynaklarını çok tükettiğiniz için siteniz askıya alınacaktır diye. Bu durumda sitenizin askıya alınmasını engellemenin yolu .htaccess dosyasından geçer!
İçeriği aşağıdaki gibi olan bir .htaccess dosyası işinizi görebilir:
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} hurriyet\.com\.tr [NC]
RewriteRule .* - [F]Ya da sadece engellemek yerine başka bir sayfaya yönlendirmek isteyebilirsiniz:
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} hurriyet\.com\.tr [NC,OR]
RewriteCond %{HTTP_REFERER} google\.com
RewriteRule .* - [F]hurriyet.com.tr adresinden gelen ziyaretçileri google.com adresine yönlendirdik, artık bu ziyaretçiler google.com sunucundan trafik tüketecekler ve böylece bizim sitemiz de askıya alınmaktan kurtulmuş olacak!
Bir sonraki .htaccess yazısında görüşmek üzere!
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [kötü örümcekleri engelleme]
“Kötü örümcekler” diye tanımlayabileceğimiz örümcekler sizin sitenizin bütün içeriğini, resimlerinizi yazılarınızı alırlar. Bu işlemin amacı, kullanıcıya çevrimdışıyken gezinme şansı vermesidir. Ama sizin trafiğiniz önemli ölçüde tüketilmiş olur.
Bir de daha kötü örümcekler vardır, bunlar sizin sitenizde güvenlik açıkları ararlar. Bunları engellemek ise içeriği aşağıdaki gibi olan bir .htaccess dosyası mümkündür:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]Bu listede sık karşılaşılan kötü örümcekler yer almaktadır ve .htaccess dosyasının yapacağı iş ise bu örümceklerin sitenin içeriğini tüketmesine izin vermemektir.
Bir sonraki .htaccess yazısında görüşmek üzere!
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları (dinamik bağlantı [hot link] engelleme)
İnternette içeriğin çalınmasına çok sık rastlıyoruz. Google’da kısa bir aramadan sonra bu sitenin içeriğini başka sitelerde, özellikle forumlarda bulmak mümkün.
İçerik hırsızlığıyla beraber bir de resim hırsızlığı var ve bu, sanılanın aksine daha sık yapılan bir iş. Bir sitede gördüğünüz resmi geri bağlantı vermeden içeriklerinize ekleyebiliyorsunuz. Ama bundan daha da kötü bir durum var, dinamik bağlantılar!
Dinamik bağlantıların özelliği şudur, başka birisi hem sizin resminizi kullanır, hem de o resmi kendi sunucusunda barındırmaz, sizin sunucunuzdan çeker! Yani hem resminizi alır, hem trafiğinizi tüketir!
Bu, pek istenmeyen bir durumdur, bunu aşmak ise basit bir .htaccess dosyası ile mümkündür.
Teknik
Bu konudaki teknik oldukça basittir, sitenizin ana dizinine, içeriği aşağıdaki gibi olan bir .htaccess dosyası yerleştiririz:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/.*$ [NC]
RewriteRule \.(gifjpgpng)$ - [F] Bu kodun yaptığı iş kısaca şöyle, resme istekte bulunan sunucu site.com isminde değilse, gif, jpg ve png uzantılı dosyaların çağrılmasını engeller, böylece başkaları sizin trafiğinizi tüketmemiş olacaklar.
Dinamik bağlantı resmini değiştirme
Resmi engellemek yerine resmi değiştirebilirsiniz, bunun için:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/.*$ [NC]
RewriteRule \.(gifjpg)$ http://www.site.com/dinamik-baglanti-uyari.jpg [R,L] Böylece bir başkası sizin resminize dinamik bağlantı verdiğinde, o resmin yerini dinamik-baglanti-uyari.jpg resmi alacak. Bu işlem sizin trafiğinizi tüketmeye devam eder ancak karşı tarafta uyarı resmi çıkacağı için hem dinamik bağlantıyı kaldırmak zorunda kalacaktır, hem de siz kısa süreliğine de olsa kendi reklamınızı yapabileceksiniz
İleri seviye teknikler
Eğer sitenizde bol resim yayınlıyorsanız ve google’dan gelen ziyaretçi sayısı her geçen gün artıyorsa, resmilerinize dinamik bağlantı verilmesi kaçınılmaz bir durumdur. Bu dinamik bağlantıları engellemek, yukarıda bahsettiğimiz gibi basit bir .htaccess dosyası ile mümkündür. Ama basitçe bu bağlantıları engellemek yerine, mevcut gerçeği lehimize de kullanmayı deneyebiliriz
Bunlardan birincisi, yukarıda da bahsettiğimiz gibi kendi reklamımızı yapmaktır. 1 ay boyunca bizim sunucumuzda bulunan dosyalara dinamik bağlantı verilmesine izin veririz, sonraki bir ay ise resimlerin yerine kendi reklam resmimizi gösteririz
Üstelik bunu 1 aylık periyodlarda yapmak yerine rastgele zamanlarda yaparsak, hem karşı taraf kazanmış olur, hem de biz! tükettiğin trafiğe karşılık reklam yap!
Reklam tekniğini beğenmediiyseniz ve sizin resimlerinizin alınmasına ve trafiğinizin tüketilmesine çok kızdıysanız, başka bir teknik daha kullanabilirsiniz, javascirpt! Madem sizin kendi sunucusu dışından bir dosya çağırıyor, o halde kendi elleriyle bir güvenlik açığı oluşturuyor demektir. dinamik-baglanti-uyari.jpg dosyasının içeriği resim olmayabilir, teoride bu dosyanın içeriğine basit bir javascirpt kodu, alert(‘bu sayfadaki resimler www.site.com adresine aittir!’), yerleştirilebilir. Ya da sonsuz bir döngü! Ama bu tekniği dikkatli kullanmak gerekir, çünkü sonsuz bir döngü kodunun kimi cezalandırdığı tartışmalıdır, (ziyaretçi mi, site sahibi mi?) bu unsura dikkat etmek gerekir.
Şimdilik bu kadar, bir sonraki .htaccess yazısında görüşmek üzere!
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [Yönlendirme]
.htaccess dosyaları ile yapılabileceklerden biri de “yönlendirme” işlemidir. Oldukça basit olan bu işlemi kısaca anlatalım.

Sitenizde bulunan bir dizindeki dosyaları başka bir dizine taşıdınız ve o dizine gelen ziyaretçileri yeni dizine yönlendirmek istiyorsunuz. Bu durumda .htaccess dosyası ile yönlendirme yapmak sorununuzu hemen çözecektir:
Redirect /eskidizin/ http://www.site.com/yenidizin/index.html
Burada 3 farklı unsur var, birincisi redirect kelimesi. İkincisi /eskidizin/ kelimesi. 3. sü ise http://www.site.com/yenidizin/index.html adresi. Hepsi birbirinden birer boşluk ile ayrılıyor. Bu kodun yaptığı iş, eskidizin altından bir dosya çağrıldığında ziyaretçiyi yenidizin altında index.html dosyasına yönlendiriyor.
Bir dizin altında yer alan bütün dosyalar için yönlendirme yapmak istemezseniz o halde aşağıdaki gibi bir kod kullanabilirsiniz:
Redirect /eskidizin/eskidosya.html http://www.site.com/yenidizin/yenidosya.html
.htaccess dosyaları ile yönlendirme yapmak bu kadar kolay. Ancak dikkat edilmesi gereken bir kaç nokta bulunmakta:
Birincisi eskidizin’in yerini göreceli olarak belirtiyorsunuz. Yani “/eskidizin/” adresi, “http://www.site.com/eskidizin/” adresine tekabul ediyor.
İkinci nokta ise yönlendirme yapılan adresde, tam site adının yazması. Böylece aslında yönlendirme yaptığınız adres, sizin sitenizin altında bir dosya olmayabilir. Örnek olarak aşağıdaki kodu inceleyelim:
Redirect /google/ http://www.google.com/
Bu kodu sizin sitenizin altına yerleştirirseniz, ziyaretçiler google dizinine erişmek istediklerinde google anasayfasına yönlendirecekler.
Bir sonraki .htaccess dosyasında görüşmek üzere!
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [Parola korumalı dizinler ve dosyalar]
.htaccess dosyalarının belki de en çok ihtiyaç duyulan kullanım alanıdır parola korumalı dizinler oluşturma işlemi. “Eski moda” gibi dursa da, hala web geliştiricilerin bazen işine yaramakta ve ihtiyaç duyulmaktadır.
.htaccess dosyası ile bir dizini parola korumalı yapma işleminin iki aşaması vardır.
- korumak istediğimiz dizine bir .htaccess dosyası yerleştiririz.
- Dizini görüntülemek isteyenlerin girmek zorunda olduğu “kullanıcı ismi” ve “parola” nın yer aldığı bir dosya oluştururuz. Bu dosyanın adı .htpasswd dir.

Bu işlem ile koruduğumuz dizinlere kullanıcı erişmek istediğinde pop-up olarak açılan pencere kullanıcı adı ve parola girmesini isteyecek, yetkilendirme gerçekleşmezse 403 hata sayfasını karşısına çıkaracak.
Birinci aşama: .htaccess dosyası
Birinci aşamada .htaccess dosyamızı oluşturalım. İçeriği şu şekilde olacak:
AuthName "Lutfen kullanici adi ve parolanizi giriniz:" AuthUserFile /guvenlidizin/.htpasswd AuthType Basic require valid-user
Bu dosyanın içeriğini şu şekilde açıklayabiliriz: İlk satırda kullanıcının karşısına çıkan pop-up pencerenin kullanıcıya mesajını yazıyoruz, ikinci satırda .htpasswd dosyasının hangi dizinde bulunduğunu belirtiyoruz, korumak istediğimiz dizinin içerisinde olmasına gerek yok, hatta o dizinin içerisinde olmamalı. .htpasswd dosyasının bulunması gereken yer, /www dizinin üzeridir, burada olması daha güvenlidir. 3. satırda yetkilendirme işleminin tipini, 4. satırda ise hangi açıdan yetkilendirme yapacağını belirtiyoruz.
İkinci aşama: .htpasswd dosyası
Bu aşamada oluşturacağımız .htpasswd dosyasının içeriği şu şekilde olacak:
isa:oYBf88gdB5f5o isa2:JyVzUTcfnc.WQ
Bu dosyanın içeriğinde ise kullanıcı adı ve parolası yer alıyor: kullanıcı:parola. Her satırda bir kullanıcı yer almakta. Dolayısıyla bizim işlemimizde tanımlı olan 2 kişi var, isa ve isa2. yalnızca bu kişiler giriş yapabilecek.
Peki parolalar biraz garip değil mi? Evet, garip, çünkü bunlar şifrelenmiş hali. Unix-Linux sistemlerde .htpasswd dosyasına parolanızı şifrelenmiş olarak yazmak zorundasınız. Örneğin yukarıda isa2 kullanıcısının parolası isa2 ancak şifrelenmiş hali ise JyVzUTcfnc.WQ.
Önemli Noktalar
Öncelikle şunu belirmekte fayda var, .htpasswd dosyasını, herkesin erişebileceği bir dizine koymamalısınız, sitenizin ana dizinin üstünde yeralmalı. (www ya da public_html diziniin içerisinde yeralmamalı.) Eğer siteniz linux sunucuda /home/site/ dizininde yer alıyorsa ve sitenizin www klasörü /home/site/www/ şeklinde ise, .htpasswd dosyası /home/site/.htpasswd şeklinde yerleştirilmeli.
.htaccess dosyasında require valid-user nasıl yetkilendirme yapacağını yazdık, burada, .htpasswd dosyasında adı bulunan tüm kullanıcılar, doğru parolayı girdiklerinde, ilgili dizini görüntülemek için yetkilendirilmiş olacaklar. .htpasswd dosyasında yer alan kullancılardan sadece isa’nın giriş yapabilmesini isteseydik, “require user isa” şekilnde yazacaktık kodumuzu.
.htpasswd dosyasında parolamızı nasıl şifreleyeceğiz? Bunun için internette pek çok araç bulunmakta, bazıları: http://www.4webhelp.net/us/password.php , http://www.euronet.nl/~arnow/htpasswd/ , http://www.sherylcanter.com/encrypt.php veya http://css.psu.edu/publish/htpasswd/htpasswd.html adreslerindeki araçlar kullanılabilir.
Sadece belirli dosyaları korumak
Şu ana kadar oluşturduğumuz .htaccess dosyası ile bütün dizine erişim için yetkilendirme gerçekleştirilmesini istedik, ancak sadece belirli dosyalara erişimi de kısıtlayabiliriz. Bu durumda kullanıcılar dizinde gezebilecekler ve sadece bizim belirlediğimiz dosyaları görmek istediklerinde yetkilendirme pop-up penceresi açılacak.
Bu durumda kullanacağımız kod aşağıdaki gibi olacak:
AuthName "Lutfen kullanici adi ve parolanizi giriniz:" AuthUserFile /guvenlidizin/.htpasswd AuthType Basic <files dosya1> require valid-user </files> <files dosya2> require valid-user </files> <files dosya3> require valid-user </files>
Sonuç
.htaccess dosyaları ile dosya ve dizinleri koruma işlemi bu şekilde gerçekleşmekte, siz de dosya veya dizinleri parola korumalı yapmak istediğinizde hızlı şekilde bu methodu kullanarak işlemi gerçekleştirebilirsiniz.
bir sonraki .htaccess yazısında görüşmek üzere!
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
Tarayıcı bir dizini görüntülemek istediğinde, Apache web sunucusu varsayılan olarak index.html adında bir dosya arar ve bulursa onu yükler ve gösterir. index.html yoksa index.php isminde bir dosya var mı diye bakar, varsa onun içeriğini gösterir. Her hangi bir dosya bulamazsa, ayarlarına göre ya dizinin içeriğini sade bir şekilde gösterir ya da “dizinin içeriğini görüntülemeye izniniz yok” der.
Biz ise bu yazıda varsayılan dosyayı nasıl değiştirebileceğimizi tartışacağız.
Senaryomuz şöyle olsun, tarayıcı, /resimler klasörünün içeriğini görüntülemek istesin. /resimler dizininde index.php veya benzeri bir dosya yoksa büyük bir ihtimalle dizinin içeriği kullanıcıya gösterilecektir. Bunu engellemek veya değiştirmek için, o dizinin varsayılan dosyasını değiştiririz:
DirectoryIndex ../index.php
Böylece /resimler klasörünün içeriği gezilmek istendiğinde, web sunucusu bir üst dizindeki index.php yi varsayılan dosya olarak çağıracak ve böylece sitenin ana sayfası görüntülenecek!
Ya da başka bir senaryoda dizinin içerisindeki varsayılan olarak yüklenebilecek dosyaları çoklu olarak tanımlayabiliriz:
DirectoryIndex dosya.php index.py index.pl default.htm
Bu kod sayesinde bir dizinin içeriği görüntülenmek istendiğinde web sunucusu önce dosya.php dosyasını yüklemeye çalışacak, o yoksa index.py dosyasını arayacak, o da yoksa index.pl diye devam edecek.
Dizinlerin varsayılan dosyalarını değiştirmek bu kadar kolay, siz de index.php dosyasının varsayılan olarak yüklenmesine mahkum değilsiniz, isterseniz değiştirebilirsiniz. (daha çok güvenlik nedenleriyle.)
Bir sonraki .htaccess yazısında görüşmek üzere…
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [IP Engelleme]
Aslında sitemizi yaparken tüm ziyaretçilerin faydalanması için, gelip bilgi alması için yaparız. Ancak Bazen herhangi bir ip’den gelen ziyaretçileri her hangi bir nedenle engellemek isteyebiliriz. Buna gereksinim duyduğumuzda, .htaccess dosyaları imdadımıza yetişir.

IP adreslerinde engelleme mantığı genelde Ülkelere göre yapılır. Ancak tam ip adresini bildiğiniz bir makinenin de sizin sitenize erişmesini engelleyebilirsiniz.
Örnek olarak aşağıdaki .htaccess dosyasını inceleyelim:
order allow,deny deny from 81.212 deny from 200.201.202 allow from all
Burada ip adresleri 81.212 ve 200.201.202 ile başlayan ülkeleri engelledik. (Bunlar Türkiye ve ABD).
Benzer şekilde tek bir IP adresinin de erişimini engelleyebilirsiniz:
order allow,deny deny from 88.233.45.99 allow from all
Nerede işime yarar?
IP engelleme genelde sitenize bağlanıp da “sizin hoşlanmadığınız” işler yapan ziyaretçileri engellemek için kullanılır. Bunu da sitenizin kayıt dosyalarına bakarak anlarsınız.
Ya da bir ülkeden gelen ziyaretçilerin sitenizdeki içeriği görmesini istemiyorsanız IP’yi engelleyebilirsiniz.
Bir sonraki .htaccess yazısında görüşmek üzere…
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [Hataları yönlendirme]
“.htaccess konuları” yazı dizisinin 2. bölümüyle karşınızdayız. Bugün, sunucuda oluşan hataları belli sayfalara yönlendirmenin nasıl yapılacağı üzerine tartışalım.
Daha önce, “php ile hata sayfaları yönetimi” yazısında da bu konuya değinmiştik.

Apache web sunucusu çalışırken bazen hatalar ile karşılaşır, çalışması bölünür, bu durumda ziyaretçiye kendi varsayılan hata sayfasını gösterir. Bu sayfanın pek ilgi çeken bir tarafı yoktur, dolayısıyla siz, siteniz hata yaptığında bile ziyaretçiye güzel bir sayfa göstermek isteyebilirsiniz. (istemelisiniz!) Bu durumda sunucu tabanlı hataları ilgili sayfaya yönlendirmelisiniz. Bunu da .htaccess dosyası ile sağlayabiliriz.
Temel olarak karşılaşılan hatalar ve kodları şu şekildedir:
- 401: Sayfa görüntüleme izni hatasıdır. Eğer bir dizini ya da bir sayfayı parola ile koruyorsanız, kullanıcı parolayı yanlış girdiğinde karşılaşacağı sayfadır.
- 403: Erişim engelleme hatasıdır. Kullanıcı’nın belirtilen dosyayı görüntülemeye hakkı yoktur.
- 404: Sayfa bulunamadı hatasıdır.
- 500: Sunucu işlemi gerçekleştirirken bir hatayla karşılaştı anlamına gelir.
Daha detaylı liste için bu sayfaya bakabilirsiniz.
Ziyaretçi bu hatalardan herhangi biri ile karşılaştığında bizim tasarladığımız hata sayfasını görmesini istiyorsak, içeriği aşağıdaki kod olan bir .htaccess dosyası oluşturum sitemizin ana dizinine yerleştiririz:
ErrorDocument 404 /hatalar/404.html ErrorDocument 403 /hatalar/403.html ErrorDocument 401 /hatalar/401.html ErrorDocument 500 /hatalar/500.html
Siz de yukarıda listelenmeyen diğer hata kodları için yeni sayfalar oluşturabilir ve .htaccess dosyasından yönlendirme yapabilirsiniz.
Böylece artık ziyaretçi daha “bilgilendirici” hata sayfaları ile karşılaşmış olacak.
Gördiüğünüz gibi .htaccess dosyası ile sunucunun ayarlarına müdahele etmiş olduk. Apache web sunucusu, bir dizinde işlem yaparken hata ile karşılaştığında artık sizin belirlemiş olduğunuz ayarlara göre çalışacaktır. İlerleyen yazılarda .htaccess dosyaları ile Apache’nin başka özelliklerini de değiştirebilecek ve yeni özellikler de ekleyeceğiz.
Bir sonraki .htaccess yazısında görüşmek üzere…
Bütün .htaccess Yazıları
– .htaccess konuları [Giriş]
– .htaccess konuları [Hataları Yönlendirme]
– .htaccess konuları [IP Engelleme]
– .htaccess konuları [Dizinlerin varsayılan dosyalarını değiştirme]
– .htaccess konuları [Parola korumalı dizinler ve dosyalar]
– .htaccess konuları [Yönlendirme]
– .htaccess konuları [Dinamik bağlandı (hotlink) engelleme]
– .htaccess konuları [kötü örümcekleri engelleme]
– .htaccess konuları [İşaretçi siteye göre engelleme]
– .htaccess konuları [Kapanış]
.htaccess konuları [Giriş]
Bazen, hazırladığımız uygulamanın bir bölümünde sunucunun biraz farklı davranmasını isteriz, uygulamanın sadece o bölümüne ayrıcalık tanımasını, onu farklı yorumlamasını isteyebiliriz. Bunları yapabilmemizin yolu .htaccess dosyalarından geçer. Bugün başlayacağımız yazı dizisinde de hergün bir .htaccess konusunu ele alıp değerlendireceğiz.
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Ajax ile dinamik listeleme (23)
- PHP ile sınırsız alt kategori mantığı (23)
- Blogger’da “devamını oku” bağlantısı (21)
- MySQL’de “join” kullanımı (17)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- Kullanıcı dostu url hazırlamak (14)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- Kullanıcı dostu URL oluşturma (2. teknik) (11)
- .htaccess konuları [Giriş] (11)
Etiketler
Son Yorumlar
- Murat: Güzel bir teknik, şu ana kadar sınırsız alt kategori lazım olmadı ama olmayacağı anlamına gelmiyor
- iilyas: Bu kodlar çalışmıyor arkadaşım. Localde olduğu içinmi acaba ?
- iilyas: Arkadaşım çok teşekkür ediyorum. Harika anlatmışsın ajaxla çalışmalara başlamak lazım estetik açısından.....
- Nuri: bende bu şekilde bir çalışma yaptım ancak bir sorunum var ne yaptıysam url den index.php bölümünü kaldıramadım....
- Kemal: Makale için çok teşekkürler, resimleri div tagları ile yapabilirmiyiz. Bu arada imagelara link verirsek daha...
29 / Ocak / 2009