Konular
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;
- cPanel yönetim panelinize giriş yapınız,
Dosya Yöneticisi
simgesine tıklayınız,- “
Gizli Dosyaları Göster
” seçeneğini işaretleyiniz, - Döküman dizinini seçiniz ve “
Git
” butonuna tıklayınız, - .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.