6 Temmuz 2013 Cumartesi

En Çok Kullanılan .htaccess Yöntemleri

Apache kullananların en çok ihtiyaç duyduğu .htaccess ile ilgili ihtiyaçlarım doğrultusunda birkaç araştırma sonrası aşağıda paylaştığım 21 farklı .htaccess kullanım ipucuna ulaştım. Çeviri niteliğindedir fakat mutlaka bir kenarda bulundurulmalı diye düşünüyorum.



  1. Varsayılan Dizin Sayfaları
    DirectoryIndex index.html index.php index.htm

    Varsayılan dizin dosyası ile ilk çalıştırılacak dosya adını veya türünü belirleyebilirsiniz.

  2. Varsayılan Hata Sayfası
    ErrorDocument 404 errors/404.html

    Ulaşılamayan sayfalarda (404) özelleştirilmiş bir hata sayfası göstermek için kullanılabilir.

  3. Dosya ve Dizinler de Yetki Kontrolü
    # kimse bu dizini listeleyemesin!
    deny from all

    .htaccess dosyasının bulunduğu dizin ve içerisindeki dizinlere/dosyalara erişimi yasaklar.
    -
    # 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

    Sadece belirtilen ip veya ip bloguna izin vermek ve diğer herkesin erişimini engellemek için kullanılabilir.
    -
    # tek kisiyi engelle
    order allow,deny
    deny from 83.222.23.219
    allow from all

    Tam tersi kullanım ile belirlediğiniz ip dışındakilere erişim hakkı verilebilir.


  4. .htaccess ile 301 Yönlendirme
    Redirect 301 /eski/sayfa.html http://siteniz.com/yeni/sayfa.html

    Sitenizdeki eski sayfaları yenilerine yönlendirebilirsiniz.
    -
    RedirectMatch 301 /blog(.*) http://siteniz.com/$1

    Yönlendirme işlemini biraz daha detaylı belirtebilirsiniz.

  5. Önbelleğe Alma Şemasını Değiştirme
    # yil

    Header set Cache-Control "public"
    Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
    Header unset Last-Modified

    #2 saat

    Header set Cache-Control "max-age=7200, must-revalidate"


    SetOutputFilter DEFLATE
    Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"

    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. Yukarı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.


  6. İsteklerin GZIP ile Sıkıştırılarak Gönderilmesi

    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.*

    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.
    -


    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


    Eğer web sunucusu mod_deflate desteği sağlıyorsa yukarıdaki kodu kullanabilirsiniz.
    -


    php_value output_handler ob_gzhandler


    Eğer web sunucunuz mod_deflate desteği sağlamıyor ise yukarıdaki kodu kullanabilirsiniz.


  7. Tarayıcıyı https (ssl) Siteye Yönlendirmek
    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    Bu şekilde sitenizin http ile yapılan girişleri https şeklinde yönlendirilmesini sağlayabilirsiniz.


  8. URL'nin .htaccess ile Yeniden Düzenlenmesi
    RewriteEngine on
    RewriteRule ^urun-([0-9]+)\.html$ urun.php?id=$1

    Web sitesinden urun-12.html sayfası çağrıldığında urun.php?id=12 sayfasının çalışması
    -
    RewriteEngine on
    RewriteRule ^urun/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ urun.php?id=$2

    Web sitesinden urun/ipod-nano/12.html sayfası çağrıldığında urun.php?id=12 sayfasının çalışması
    -
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^viralpatel\.net$
    RewriteRule (.*) http://www.viralpatel.net/$1 [R=301,L]

    Web sitesinde www olmayan adresin www olan adrese yönlendirilmesi
    -
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)$ uye.php?kadi=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ uye.php?kadi=$1

    Web sitesinin siteniz.com/kullaniciadi veya siteniz.com/kullaniciadi/ sayfası çağrıldığında siteniz.com/uye.php?kadi=kullaniciadi


  9. Dizin Listelenmesi / Engellenmesi
    Options -Indexes

    veya
    IndexIgnore *

    ile belirtilen dizindeki dosyaların listelenmemesini sağlayabilirsiniz.
    -
    Options +Indexes

    ile dizinin listelenmesini sağlayabilirsiniz.
    -
    Options +Indexes
    IndexOptions +FancyIndexing

    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.


  10. Yeni Dosya Türleri
    AddType application/x-endnote-connection enz
    AddType application/x-endnote-filter enf
    AddType application/x-spss-savefile sav

    Yeni dosya türlerini bu şekilde tanımlayabilirsiniz.


  11. Statik Dosyalara Direkt Erişimi Engellemek

    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]

    Resim, video, müzik vb. dosyalara sitenize ait sayfaları kullanmadan direkt erişimi engellemek için kullanılabilir.


  12. PHP için Dosya Yükleme ve Süre Limitlerinin Düzenlenmesi
    php_value upload_max_filesize 20M
    php_value post_max_size 20M
    php_value max_execution_time 200
    php_value max_input_time 200

    PHP dosyalar da Apache'nin standart ayarlarının dışına çıkmak için yukarıdaki yöntemi kullanarak dosya yükleme boyutu, dosya post edilme boyutu, çalıştırma süresi ve giriş süresini düzenleyebilirsiniz.


  13. Dosyaların Çalıştırılmasını Engellemek
    Options -ExecCGI
    AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi

    Belirtilen uzantılara ait dosyaların text dosya görevi görmesini sağlayarak server tarafından çalışması engellenecektir.


  14. Varsayılan Karaktersetinin ve Dil Başlığının Değiştirilmesi
    AddDefaultCharset UTF-8
    DefaultLanguage en-US



  15. Sunucu Zaman Diliminin Değiştirilmesi
    SetEnv TZ Europe/Istanbul



  16. Dosyanın LDAP ile Korunması

    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

    Belirtilen dosyaya erişimin LDAP doğrulama yöntemi ile korunmasını sağlar.


  17. Özelleştirilmiş Başlık (Header) Bilgisi Gönderme
    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"



  18. User-Agent ile Gelen Belirli İstekleri Engelleme
    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


0 yorum:

Yorum Gönder