Sitenizdeki bazı dosyalara veya klasörlere erişimi sınırlandırmanız gerekebilir. Bunu yapmak için Session veya HTTP doğrulama gibi yöntemler mevcut. Biz bu işlemi .htaccess dosyası kullanarak yapacağız.
Öncelikle .htaccess nedir ve ne işe yarar sorularını cevaplandıralım:
.htaccess dosyası (hypertext access file), klasör(ler) düzeyinde Apache’nin ayarlanmasına izin veren, http sunucusu genel ayar dosyasını (httpd.conf) özelleştirebilen dosyadır. Dosya “.htaccess” olarak bilinir.
- Sitenizin kaynaklarını tüketen, sitenizden veri çeken linkler (hotlink) engellenebilir.
- Sitenizi ziyaret eden zararlı botlar engellenebilir.
- Site üzerinde gizli klasörler oluşturulabilir.
- Klasörlere erişim engellenebilir.
- URL’deki bağlantı adresleri biçimlendirilebilir. Örnek: “makale.php” “makale.html” gibi düzenlemeler ve özelleştirmeler yapılabilir.
- Veri sıkıştırma için kullanılabilir.
- Dosya veya klasörlere şifre eklenebilir.
- Hata sayfaları özelleştirilebilir.
- Klasörleri listelemede kullanılabilir.
- Yönlendirmelerde kullanılabilir.
- Hangi dilin kullandığı saklanabilir.
- Site için otomatik alt alan adları(subdomainler) oluşturulabilir.
Şifreli erişim yapılacak dizini belirledikten sonra, ilgili dizin içinde .htaccess adlı bir dosya oluşturalım. Bu dosyanın içine, aşağıdaki kodları yapıştıralım.
AuthName "Şifre Koruması" AuthType Basic AuthUserFile D:/WEB/xampp/htdocs/kontroller/.htpasswd require valid-user
Üstteki kodlarda AuthUserFile yönergesinde belittiğim .htpasswd dosyası, şifrelemizi saklamak için kullandığımız dosyadır. Kullanıcı adı ve şifremizi .htpasswd dosyasına özel bir yöntemle şifreledikten sonra kaydetmemiz gerekiyor. Buraya tıklayın ve açılan sayfada Username kısmına kullanıcı adınızı, Password kısmına da parolanızı yazdıktan sonra Create .htpasswd file butonuna tıklayın. Ben kullanıcı adı admin ve şifre 1234 olarak girdim ve oluşturduğum şifre şu şekilde:
admin:$apr1$sCPZn/..$EUpwemgOYdbrcuAcXTBBI.
Bu şifreyi boş bir .htpasswd dosyası oluşturun ve içine kaydedin.
Şimdi ilgili dizinde herhangi bir dosyaya erişim yapmayı deneyelim.
Resimde görüldüğü gibi kullanıcı adı ve parolası ile giriş yapmamızı isteyen bir pencere geldi. Yaptığımız bu sınırlandırma, ilgili dizindeki tüm dosyaları kapsamaktadır.
Belirli bir dosya için erişimi engellemeyi öğrenelim. Kodlarımız şu şekilde:
<Files ozel.html> AuthName "Şifre Koruması" AuthType Basic AuthUserFile D:/WEB/xampp/htdocs/kontroller/.htpasswd require valid-user </Files>
Files yönergesindeki ozel.html, erişimi sınırlandıracağımız dosyanın adı. Bu kodlar sadece ilgili dosya için erişimi şifreli yapacaktır, diğer dosyalara erişim şifresiz olarak sağlanır.
Örnek .htaccess ve .htpasswd dosyalarına http://www.celalyurtcu.com/dosyalar/ornek-htaccess-htpasswd.zip adresinden ulaşabilirsiniz.