htaccess Dosyası Nedir?

.htaccess dosyası (hypertext access), web sunucu yapılandırmasından bağımsız bir yönetimi mümkün kılan, belirli web server tarafından desteklenen, dizin-seviyesinde bir yapılandırma dosyasıdır. Web dizini içerisinde yer alır ve web sunucunun genel yapılandırma ayarlarının bazılarını içerisinde bulunduğu dizin için geçersiz kılarak yeni kurallar eklenebilmesini sağlar.

.htaccess dosyasının orjinal amacı her klasöre erişimin ayrı ayrı kontrol edilebilmesidir, örneğin bir klasöre parola koruması eklenebilmesi gibi. Bununla birlikte .htaccess dosyaları, içerik türleri, karakter setleri, CGI uygulayıcıları ve daha birçok düzenleyici parametre içerebilir.

htaccess Dosyası Nerede Bulunur?

.htaccess dosyası web sitesinin ana döküman dizininde bulunabilir. Dosyayı görüntülemek için;

  1. cPanel yönetim panelinize giriş yapınız,
  2. Dosya Yöneticisi simgesine tıklayınız,
  3. Gizli Dosyaları Göster” seçeneğini işaretleyiniz,
  4. Döküman dizinini seçiniz ve “Git” butonuna tıklayınız,
  5. .htaccess dosyasını public_html klasörü altında görüntüleyebilir ve düzenleyebilirsiniz.

Not: Dosyanız ana dizin içerisinde veya diğer dizinlerde yer almıyorsa “.htaccess” adıyla kendiniz oluşturabilir ve kodlarınızı girebilirsiniz.

Hangi Amaçlar için Kullanılır?

Yetkilendirme ve Kimlik Doğrulama

.htaccess dosyası kullanılarak bir dizin parola ile koruma altına alınabilir. Bu durumda çoğu zaman yanında bir de içerisinde kullanıcı adları ve parolalarının yer aldığı .htpasswd dosyası yer alır.

URL Yönlendirme (Rewriting URL)

URL yönlendirme fonksiyonu ile uzun adresler daha kısa, hatırlanabilir adreslere veya farklı adreslere yönlendirilebilir. URL yönlendirme için aşağıdaki kodu alan adlarınızı belirterek .htaccess dosyanıza yapıştırınız:

RewriteEngine On
ReWriteCond %{HTTP_HOST} ^(www\.)?eskialanadiniz\.com$ [NC]
ReWriteRule ^(.*)$ http://www.yenialanadiniz.com/$1 [R=301,L]

Dosya ve Dizinlere Erişimi Engelleme

Kullanıcıların bir dizine erişimi, IP adreslerine veya alan adlarına göre engellenebilir veya izin verilebilir. Bu şekilde botlar, arama motorları, ağ örümcekleri (spiders) ve istenmeyen referanslardan gelen trafik kısıtlanabilir. Dosyalarını ve dizinlerini engellemek istediğiniz bir klasör içerisinde .htaccess adında bir dosya oluşturun ve içerisine şu kodları giriniz:

deny from all

Belirli bir IP adresinden veya IP bloğundan erişime izin vermek için:

deny from all
allow from 192.168.1.10 # tek ip adresi
allow from 192.168.1.0/24 # ip bloğu

Sadece tek bir dosyaya erişimi kısıtlamak için:

<Files gizlidosya.html>
Order allow,deny
Deny from all
</Files>

Dizin Listeleme

Bir klasör içerisinde yer alan dosyalardan hangisinin ilk olarak görüntüleneceğini belirleyebilir. Örneğin ana sayfa adresinin index.htm yerine hosgeldiniz.html olarak değiştirilmesi gibi. Örnek olarak şu kodu kullanabilirsiniz:

DirectoryIndex hosgeldiniz.html

Özel Hata Mesajları

“301 Moved Permanently”, “404 Not Found” vb. sunucu taraflı hata sayfalarının değiştirilebilmesine olanak sağlar. Böylece ziyaretçilerinize kendi hazırladığınız hata sayfalarını görüntüleyebilirsiniz.

404 hata sayfasını değiştirmek istiyorsanız ve oluşturduğunuz hata.html sayfanız web sitenizin ana dizininde yer alıyorsa şu kodu kullanabilirsiniz:

ErrorDocument 404 hata.html

Oluşturduğunuz hata.html sayfanız web sitenizin “dokumanlar” vb. başka bir dizininde yer alıyorsa:

ErrorDocument 404 /dokumanlar/404hata.html

MIME/Dosya Türlerinin Belirlenmesi

Farklı dosya türlerinin nasıl işleneceğini belirleyebilir. Örneğin düz bir metin belgesinin txt uzantısı ile açılabileceğini veya sıkıştırılmış bir zip arşivinin zip uzantıları ile çalışan uygulamalar ile açılabileceğini belirtir.

Kodun ilk kısmı olan “AddType” bir dosya uzantısı ilişkilendirmesinin eklendiğini, ikinci kısımda hangi dosyaların, örneğin”text/plain" yapısındaki dosyaların sahip olacağı uzantı “.txt” olarak belirtilmektedir.

Bazı MIME türleri ve ilişkilendirildikleri uzantılar:

AddType text/html .html .htm 
AddType text/plain .txt 
AddType text/richtext .rtx 
AddType text/tab-separated-values .tsv 
AddType text/x-setext .etx 
AddType text/x-server-parsed-html .shtml .sht 
AddType application/macbinhex-40 .hqx 
AddType application/netalivelink .nel 
AddType application/netalive .net 
AddType application/news-message-id 
AddType application/news-transmission 
AddType application/octet-stream .bin .exe 
AddType application/oda .oda 
AddType application/pdf .pdf 
AddType application/postscript .ai .eps .ps 
AddType application/remote-printing 
AddType application/rtf .rtf 
AddType application/slate 
AddType application/zip .zip 
AddType application/x-mif .mif 
AddType application/wita 
AddType application/wordperfect5.1 
AddType application/x-csh .csh 
AddType application/x-dvi .dvi 
AddType application/x-hdf .hdf 
AddType application/x-latex .latex 
AddType application/x-netcdf .nc .cdf 
AddType application/x-sh .sh 
AddType application/x-tcl .tcl 
AddType application/x-tex .tex 
AddType application/x-texinfo .texinfo .texi 
AddType application/x-troff .t .tr .roff 
AddType application/x-troff-man .man 
AddType application/x-troff-me .me 
AddType application/x-troff-ms .ms 
AddType application/x-wais-source .src 
AddType application/x-bcpio .bcpio 
AddType application/x-cpio .cpio 
AddType application/x-gtar .gtar 
AddType application/x-shar .shar 
AddType application/x-sv4cpio .sv4cpio 
AddType application/x-sv4crc .sv4crc 
AddType application/x-tar .tar 
AddType application/x-ustar .ustar 
AddType application/x-director .dcr 
AddType application/x-director .dir 
AddType application/x-director .dxr 
AddType application/x-onlive .sds 
AddType application/x-httpd-cgi .cgi 
AddType image/gif .gif .GIF 
AddType image/ief .ief 
AddType image/jpeg .jpeg .jpg .jpe .JPG 
AddType image/tiff .tiff .tif 
AddType image/x-cmu-raster .ras 
AddType image/x-portable-anymap .pnm 
AddType image/x-portable-bitmap .pbm 
AddType image/x-portable-graymap .pgm 
AddType image/x-portable-pixmap .ppm 
AddType image/x-rgb .rgb 
AddType image/x-xbitmap .xbm 
AddType image/x-xpixmap .xpm 
AddType image/x-xwindowdump .xwd 
AddType audio/basic .au .snd 
AddType audio/x-aiff .aif .aiff .aifc 
AddType audio/x-wav .wav 
AddType audio/x-pn-realaudio .ram 
AddType audio/x-midi .mid 
AddType video/mpeg .mpeg .mpg .mpe 
AddType video/quicktime .qt .mov 
AddType video/x-msvideo .avi 
AddType video/x-sgi-movie .movie 
AddType message/external-body 
AddType message/news 
AddType message/partial 
AddType message/rfc822 
AddType multipart/alternative 
AddType multipart/appledouble 
AddType multipart/digest 
AddType multipart/mixed 
AddType multipart/parallel 
AddType x-world/x-vrml .wrl

Önbellek Kontrolü

Bandwidth kullanımını, sunucu yükü ve gecikmeleri azaltmak için .htaccess dosyası, proxy ve web tarayıcıların hangi dosya ve dizinlerin ne kadar süre ile önbellekte tutulması gerektiği gibi işlemlerin kontrol edilebilmesini sağlar.

Örneğin aşağıdaki kodlar tarayıcıya özel olarak bazı resim, css ve javascript dosyalarının önbelleğe alınmasını ve saniye cinsinden ne kadar süre önbellekte tutulmaları gerektiğini belirtmektedir:

# Enable GZIP 
<ifmodule mod_deflate.c> 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4\.0[678] no-gzip 
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</ifmodule> 
 
# Expires Headers - 2678400s = 31 days 
<ifmodule mod_expires.c> 
  ExpiresActive On 
  ExpiresDefault "access plus 2678400 seconds" 
  ExpiresByType text/html "access plus 7200 seconds" 
  ExpiresByType image/gif "access plus 2678400 seconds" 
  ExpiresByType image/jpeg "access plus 2678400 seconds" 
  ExpiresByType image/png "access plus 2678400 seconds" 
  ExpiresByType text/css "access plus 750000 seconds" 
  ExpiresByType text/javascript "access plus 2678400 seconds" 
  ExpiresByType application/x-javascript "access plus 2678400 seconds" 
</ifmodule> 
 
# Cache Headers 
<ifmodule mod_headers.c> 
  # Cache specified files for 31 days 
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> 
  Header set Cache-Control "max-age=2678400, public" 
  </filesmatch> 
  # Cache HTML files for a couple hours 
  <filesmatch "\.(html|htm)$"> 
  Header set Cache-Control "max-age=7200, private, must-revalidate" 
  </filesmatch> 
  # Cache PDFs for a day 
  <filesmatch "\.(pdf)$"> 
  Header set Cache-Control "max-age=86400, public" 
  </filesmatch> 
  # Cache Javascripts for 31 days 
  <filesmatch "\.(js)$"> 
  Header set Cache-Control "max-age=2678400, private" 
  </filesmatch> 
</ifmodule>

Dedicated server sayfamızı ziyaret ederek, fiziksel sunucu kiralama hakkında detaylı bilgi alabilirsiniz.

hr4