Yaygın olarak kullanılan ve sürekli ihtiyaç duyabileceğiniz “.htaccess” türevlerini aşağıda bulabilirsiniz.
Varsayılan Dizin Sayfaları
Varsayılan dizin dosyası ile ilk çalıştırılacak dosya adını veya türünü belirleyebilirsiniz.
1 | DirectoryIndex index.html index.php index.htm |
Varsayılan Hata Sayfası
Varsayılan dizin dosyası ile ilk çalıştırılacak dosya adını veya türünü belirleyebilirsiniz.
1 | ErrorDocument 404 errors/404.html |
Dosya ve Dizinler de Yetki Kontrolü
.htaccess dosyasının bulunduğu dizin ve içerisindeki dizinlere/dosyalara erişimi yasaklar.
1 2 | # kimse bu dizini listeleyemesin! deny from all |
Sadece belirtilen ip veya ip bloguna izin vermek ve diğer herkesin erişimini engellemek için kullanılabilir.
1 2 3 4 5 6 | # sadece izin verilen ip blogu veya ip order deny,allow deny from all allow from 192.168.0.0/24 # this would do the same thing.. #allow from 192.168.0 |
Tam tersi kullanım ile belirlediğiniz ip dışındakilere erişim hakkı verilebilir.
1 2 3 4 | # tek kisiyi engelle order allow,deny deny from 83.222.23.219 allow from all |
.htaccess ile 301 Yönlendirme
Sitenizdeki eski sayfaları yenilerine yönlendirebilirsiniz.
1 | Redirect 301 /eski/sayfa.html http://siteniz.com/yeni/sayfa.html |
Yönlendirme işlemini biraz daha detaylı belirtebilirsiniz.
1 | RedirectMatch 301 /blog(.*) http://siteniz.com/$1 |
Önbelleğe Alma Şemasını Değiştirme
Statik yani değişmeyen dosya uzantılarını belirterek istemcinin bu dosyaları önbelleğe almalarını sağlayarak trafiğinizi düşürebilir ve sayfalarınızın daha hızlı açılmasını sağlayabilirsiniz. Aşağıdaki örnekte ilk kısım statik dosyalar ve 1 yil süreyle önbellekte tutulabileceği belirtildi, ikinci örnekte ise değişme olasılığı yüksek olan dosyalar için 2 saat önbellekte tutulabilir şeklinde belirtildi. Dosya uzantıları ve sürelerle oynayarak istediğiniz önbellekleme yapısını oluşturabilirsiniz. Önbellekleme için sunucu taraflı memcache vb. yazılımlar ile sonraki maddede belirttiğimiz gzip kullanılabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # yil <filesmatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$"=""> Header set Cache-Control "public" Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" Header unset Last-Modified </filesmatch> #2 saat <filesmatch "\.(html|htm|xml|txt|xsl)$"=""> Header set Cache-Control "max-age=7200, must-revalidate" </filesmatch> <filesmatch "\.(js|css)$"=""> SetOutputFilter DEFLATE Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" </filesmatch> |
İsteklerin GZIP ile Sıkıştırılarak Gönderilmesi
Bu şekilde tüm html, txt, css, js, php ve pl dosyalarını sıkıştırarak istemcinin daha hızlı dosyayı almasını sağlar.
1 2 3 4 5 6 7 8 9 10 | <ifmodule mod_gzip.c=""> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </ifmodule> |
Eğer web sunucusu mod_deflate desteği sağlıyorsa aşağıdaki kodu kullanabilirsiniz.
1 2 3 4 5 6 7 | <location> SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI \ \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \ \.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary </location> |
Eğer web sunucunuz mod_deflate desteği sağlamıyor ise aşağıdaki kodu kullanabilirsiniz.
1 2 3 | <filesmatch "\.(txt|html|htm|php)"=""> php_value output_handler ob_gzhandler </filesmatch> |
Tarayıcıyı https (ssl) Siteye Yönlendirmek
Bu şekilde sitenizin http ile yapılan girişleri https şeklinde yönlendirilmesini sağlayabilirsiniz.
1 2 3 | RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} |
URL’nin .htaccess ile Yeniden Düzenlenmesi
Web sitesinden urun-12.html sayfası çağrıldığında urun.php?id=12 sayfasının çalışması
1 2 | RewriteEngine on RewriteRule ^urun-([0-9]+)\.html$ urun.php?id=$1 |
Web sitesinden urun/ipod-nano/12.html sayfası çağrıldığında urun.php?id=12 sayfasının çalışması
1 2 | RewriteEngine on RewriteRule ^urun/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ urun.php?id=$2 |
Web sitesinde www olmayan adresin www olan adrese yönlendirilmesi
1 2 3 | RewriteEngine On RewriteCond %{HTTP_HOST} ^oguzturk\.net$ RewriteRule (.*) http://www.oguzturk.net/$1 [R=301,L] |
Web sitesinin siteniz.com/kullaniciadi veya siteniz.com/kullaniciadi/ sayfası çağrıldığında siteniz.com/uye.php?kadi=kullaniciadi
1 2 3 | RewriteEngine On RewriteRule ^([a-zA-Z0-9_-]+)$ uye.php?kadi=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ uye.php?kadi=$1 |
Dizin Listelenmesi / Engellenmesi
1 | Options -Indexes |
veya belirtilen dizindeki dosyaların listelenmemesini sağlayabilirsiniz.
1 | IndexIgnore * |
ile dizinin listelenmesini sağlayabilirsiniz.
1 | Options +Indexes |
Listelemeye ek olarak FancyIndexing belirtilerek listelenen dizinlerde Dosya/Dizin Adına ek olarak Son Düzenleme Tarihi, Boyutu, Açıklamasının da çıkması sağlanabilir.
1 2 | Options +Indexes IndexOptions +FancyIndexing |
Yeni Dosya Türleri
Yeni dosya türlerini bu şekilde tanımlayabilirsiniz.
1 2 3 | AddType application/x-endnote-connection enz AddType application/x-endnote-filter enf AddType application/x-spss-savefile sav |
Statik Dosyalara Direkt Erişimi Engellemek
Resim, video, müzik vb. dosyalara sitenize ait sayfaları kullanmadan direkt erişimi engellemek için kullanılabilir.
1 2 3 4 | RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC] RewriteCond %{HTTP_REFERER} !^http://www.askapache.com.*$ [NC] RewriteRule \.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ - [F,NS,L] |
PHP için Dosya Yükleme ve Süre Limitlerinin Düzenlenmesi
PHP dosyalar da Apache’nin standart ayarlarının dışına çıkmak için aşağıdaki yöntemi kullanarak dosya yükleme boyutu, dosya post edilme boyutu, çalıştırma süresi ve giriş süresini düzenleyebilirsiniz.
1 2 3 4 | php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200 |
Dosyaların Çalıştırılmasını Engellemek
Belirtilen uzantılara ait dosyaların text dosya görevi görmesini sağlayarak server tarafından çalışması engellenecektir.
1 2 | Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .sht |
Varsayılan Karaktersetinin ve Dil Başlığının Değiştirilmesi
1 2 | AddDefaultCharset UTF-8 DefaultLanguage en-US |
Sunucu Zaman Diliminin Değiştirilmesi
1 | SetEnv TZ Europe/Istanbul |
Dosyanın LDAP ile Korunması
Belirtilen dosyaya erişimin LDAP doğrulama yöntemi ile korunmasını sağlar.
1 2 3 4 5 6 7 8 9 10 11 | <files soru.html=""> order deny,allow deny from all AuthType Basic AuthName "ODTU Kullanici Girisi" AuthLDAP on AuthLDAPServer ldap://ogrenciler.metu.edu.tr/ AuthLDAPBase "ou=Student, o=Ortadogu Teknik Universitesi, c=au" require valid-user satisfy any </files> |
Özelleştirilmiş Başlık (Header) Bilgisi Gönderme
1 2 3 4 | Header set P3P "policyref=\"http://www.askapache.com/w3c/p3p.xml\"" Header set X-Pingback "http://www.askapache.com/xmlrpc.php" Header set Content-Language "en-US" Header set Vary "Accept-Encoding" |
User-Agent ile Gelen Belirli İstekleri Engelleme
1 2 3 4 | Header set P3P "policyref=\"http://www.askapache.com/w3c/p3p.xml\"" Header set X-Pingback "http://www.askapache.com/xmlrpc.php" Header set Content-Language "en-US" Header set Vary "Accept-Encoding" |
User-Agent ile Gelen Belirli İstekleri Engelleme
1 2 3 | SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT |
Yorumlar