.htaccess dosyasında birkaç değişiklik yaparak Apache üzerindeki
sitenizde gizli klasörler oluşturabileceğinizi, hotlinking�i
engelleyebileceğinizi, hatta zararlı bot�lardan korunabileceğinizi
biliyor muydunuz?
Not: .htaccess (Hypertext Access),
Apache�nin klasör düzeyinde ayarlara izin veren, genel ayar
dosyasındaki direktifleri özelleştirebilen dosyadır.
1. Klasörlere ErişimBir klasöre tüm erişimi engellemek istiyorsanız (mesela program kaynak
kodlarınızı barındıran bir klasörünüz olabilir; bu durumda klasöre
internetten değil, yalnızca dosya sisteminden erişmeyi
isteyebilirsiniz) klasörün içinde
.htaccess dosyası oluşturup içine
Kod:
#deny all access
deny from all
yazmanız yeterli. Eğer bu klasöre yalnızca belirlediğiniz ip adresiyle veya ip bloğu tarafından erişilmesini istiyorsanız
Kod:
#deny all access
deny from all
allow from 10.0.0.1 # tek ip adresi
allow from 192.168.0.0/24 # ip bloğu
yazmanız yeterli. Tek bir dosya için erişimi engellemek için ise yazmanız gereken şu:
Kod:
Order allow,deny
Deny from all
2. Klasör ListelemekBir klasördeki dosyaların listelenmesini istiyorsanız .htaccess dosyasına şunları yazmanız gerekiyor:
Kod:
Options +Indexes +MultiViews +FollowSymlinks
IndexOptions FancyIndexing
Bunun için sunucunuzda
autoindex modülünün yüklü olması gerekiyor. Klasördeki öntanımlı listelemeyi iptal etmek için ise şu satır yeterli:
Kod:
IndexIgnore *
3. SıkıştırmaSitenizin bant genişliğini (bandwidth) korumak için bir php özelliği olan veri sıkıştırmayı kullanabilirsiniz.
.htaccess dosyasına şunu eklemelisiniz:
Kod:
php_value zlib.output_compression 16386
4. Dosyaları GizlemekBelirli dosyalara erişimi engellemek için
Filesdirektifiyle birlikte Regular Expression kullanabilirsiniz. Örnek
olarak konfigürasyon dosyalarına, robot.txt�e veya log�lara erişimi
engellemek isteyebilirsiniz. Aşağıdaki örnek klasördeki
.ht ile başlayan dosyalara erişimi engellemektedir.
Kod:
Order allow,deny
Deny from all
Satisfy All
5. Özel HTTP 404 Hata SayfasıZiyaretçileriniz �404: Sayfa Bulunamadı� hatasıyla karşılaşacaklarında
sizin istediğiniz bir dosyaya yönlenmelerini sağlamak için şu kodu
kullanın:
Kod:
ErrorDocument 404 /errors/notfound.html
Bu şekilde diğer hata kodlarını da özelleştirebilirsiniz.
Dikkat!Internet Explorer 512 bayttan küçük hata sayfalarıyla karşılaştığında,
MSN search gibi bağlantıların bulunduğu kendi hata sayfasını
kullanıcıya göstermektedir. Belirttiğiniz hata sayfasının 512B�tan
büyük olduğuna emin olun.
6. Hotlinking�i Engellemek Hotlinkingbasitçe sizin sitenizdeki bir resmi, videoyu başka bir sitenin
göstermesine denir. Bu durumda olan sizin bandwidth�inize olur. Örnek
olarak sitenizin dışında kullanılan bazı dosyalara erişimi engelleyip
nohotlink.gif adında bir resim dosyası gönderen şu koda bakalım:
Kod:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?siteniz\.com[NC]
RewriteRule .*\.(zip|mp3|avi|wmv|mpg|mpeg)$ http://www.siteniz.com/img/nohotlink.gif [R,NC,L]
Kod basitçe siteniz.com dışından çağırılan zip, mp3 ve bazı video dosyaları yerine nohotlink.gif dosyasını gösteriyor.
Dikkat! Eğer resim hotlink�lerini engellerseniz site dışından istenen tüm resimleri engelleyeceksiniz. Bu durumda mesela
feedburner gibi bir hizmet kullanıyorsanız bu hizmet için kodunuzu değiştirmeniz gerekecektir.
7. Kötü Bot�ları EngellemekSitenizi kullanan veya tamamen indirmek isteyen bot�lara karşı .htaccess dosyasını kullanabilirsiniz:
Kod:
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} ^WebW++++++ [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]
8. no-www DesteğiSiz de sitelerde
www subdomain�inin kullanılmasına http://www bu kod işinizi görecektir:
Kod:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.example\.com[nc]
RewriteRule ^(.*)$ http://example.com/$1 [r=301,nc]
9. Hangi Dili Kullandığınızı SaklamakDosyalarınızın uzantılarını değiştirip
.htaccess dosyasına bir kural ekleyerek hangi dili kullandığınızı ziyaretçilerinizden saklayabilirsiniz. Aşağıdaki örnek sayesinde
.133t uzantılı dosyalar PHP dosyaları gibi işlenecektir.
Kod:
# Make PHP code look like unknown types
AddType application/x-httpd-php .133t
10. Değişik İpuçları
- .htaccess dosyasını olabildiğince küçük tutun. Çünkü her dosya isteğinde sunucu tarafından kontrol edilirler.
- .htaccess dosyasını düzenli tutun. Kurallar arttıkça dosyayı anlaması zorlaşacaktır. # kullanarak her bölüme açıklama yazın.
- URL�i
yeniden tanımladığınız, bir önceki sayfaya yönlenen kurallarda
(Nohotlink örneği gibi) [L] özelliğini ekleyin. Bu sunucuya, başka bir
kuralı uygulamamasını belirtir.
- .htaccess kurallarının alt
klasörlerde de geçerli olduğunu, alt klasördeki .htaccess kuralının ise
üzerindeki kuralları değiştirebileceğini düşünün.
11. .htpasswd ile Şifre Koruması İstediğiniz dosya veya klasörlere şifre eklemek için şu adımları takip edin:
- Şifrelemek istediğiniz klasörde .htpasswd dosyası oluşturun.
- Dosya içeriği kullanıcıadı:şifre
tarzındadır. Kullanıcı adı düz metindir. Şifrenin ise şifrelenmiş
olması gerekir. Şifrenizi almak için http://www kullanabilirsiniz.
- Dosyayı kendi bilgisayarınızda oluşturup sunucuya upload ettiyseniz ASCII mode kullandığınızdan emin olun.
- Şimdi .htaccess dosyanızı düzenleyin. Kural, düzenlediğiniz dosyanın bulunduğu klasörde ve alt klasörlerinde geçerli olacaktır:
Kod:
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName �My Secret Folder�
require valid-user
Kuralı tek dosya için oluşturmak istiyorsanız kodu direktifi içinde kullanmalısınız.
.htaccess dosyanızın erişilebilir olmadığına emin olun. (bkz. 1. başlık)
12. Öntanımlı Sayfayı DeğiştirmekÖntanımlı sayfa bilgisini aşağıdaki şekilde, sıraya dikkat ederek değiştirebilirsiniz:
Kod:
DirectoryIndex home.html index.htm index.html index.php