6 Ağustos 2014

.htaccess dosyasının kullanımı

Hypertext Access yani .htaccess dosyası, Apache Web sunucuları ve diğer bir çok sunucu tarafından kullanılan ve web alanı üzerinde çeşitli komutlar yardımıyla ayarların değiştilmesine ve yapılandırılmasına olanak sağlayan bir doysa olarak karşımıza çıkmaktadır.

.htaccess dosyası web sitesinin ana dizininde bulunur. Web sitenizin ana dizininde böyle bir dosya bulunmuyor ise ve siz bir .htaccess dosyası kullanmak istiyorsanız web sitenizin ana dizininde bir metin belgesi açarak adını .htaccess olarak değiştirmeniz yeterlidir.

Fakat kapsamlı bir bilgiye sahip değilseniz .htaccess dosyasını kullanırken çok dikkatli olmanız gerekmektedir. .htaccess dosyasının genel kullanılış biçimlerinden bir kaç örnek aşağıda sıralanmıştır.

404 Hata Sayfaları

Hazırladığınız internet sitesini yayınlamaya başladığınız andan itibaren sizin hatalarınız yada elinizde olmayan nedenlerden dolayı hatalar oluşabilir. Bu hataların en başta geleni 404 kodlu hatadır. 404 kodlu hata yani sayfa bulunamadı hatası, ziyaretçi internet siteniz üzerinde bir URL ye tıkladığında bu URL bulunmuyor ise yada bozulmuş bir sayfa ise 404 kodlu sayfa bulunamadı hatası ile karşılaşır. İnternet siteniz üzerinde bulunabilecek bu hata sayfalarını düzenlemek için .htaccess dosyası içinde şu kodlama yapısını kullanabilirsiniz.

ErrorDocument 404/hata/bulunamadi.html

Bu kod ile sayfanızda 404 hatası sayfa bulunamadı hatasıyla karşılaşan bir kullanıcıyı siteadiniz.com/hata/bulunamadi.html sayfasına yönlendirecektir.

500 Dahili Sunucu Hatası (Internal Server Error)

İnternet sitenizde bulunabilecek sunucu hataları genellikle kodlamalardan kaynaklanan hatalardır. Ziyaretçileri sunucu hataları ile karşılaştıklarında 404 sayfa bulunamadı hata sayfası gibi bir başka URL'ye yönlendirilebilirler.

ErrorDocument 500/hata/sunucuhatasi.html

Bu kod ile sunucu hatası ile karşılaşan bir kullanıcı siteadiniz.com/hata/sunucuhatasi.html sayfasına yönlendirilecektir.

401 Yetki Gerekliliği Hatası (Authorization Required)

401 hata kodu internet siteniz üzerinde şifre ile korunmuş bir sayfaya şifresiz olarak giriş yapılmaya çalışıldığında karşılaşılan hata sayfasıdır.

ErrorDocument 401/hata/yetkisizgiris.html

Şifre ile koruduğunuz bir sayfaya giriş yapılmak istenildiğinde az önce bahsettiğimiz gibi bir yönlendirme işlemi gerçekleştirmenizi sağlamaktadır.

403 yasaklanmış sayfa (Forbidden Page)

Web sitenizi oluşturan dosyaların yetki izinleri (CHMOD) kısıtlanmış sayfalara ulaşılmak istenildiğinde karşılaşılan sayfadır.

ErrorDocument 403/hata/yasaklanmissayfa.html

Web siteniz için giriş yapılmasını yasaklamak istediğiniz sayfalara ulaşılmak istenildiğinde yönlendirilecek sayfayı göstermektedir.

Hotlinking

İnternet siteniz üzerinde bulunan medya dosyalarının diğer sitelerden erişilmesini istemediğiniz durumlarda kullanılır. Web sitenizin bant genişliğinin (bandwidth) yeterli olmadığını düşündüğünüz zamanlarda aşağıdaki kodlar yardımıyla diğer sitelerin belirtilen dosyalara ulaşmasını engelleyebilirsiniz.

<IfModule mod_rewrite.c>
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]
</ifModule>

Bu kod yardımı ile siteniz dışından zip,mp3,avi,wmv ve mpeg uzantılı dosyaların çağırılmasını engellemiş olursunuz. Siteniz dışından bu dosyalara ulaşmak isteyen tüm istekler, ulaşılmak istenilen dosya yerine nothotlink.gif adlı dosyaya ulaşacaktır. Ancak bilinmesi gereken bir durum bulunmaktadır. Siteniz üzerinde bulunan resim dosyalarına erişimi engellediğiniz de FeedBurner gibi siteler üzerinde resimleriniz gösterilmeyecektir. Bu sebep ile kod yapısını kullandığınız da dikkat etmeniz ne yaptığınızı iyi biliyor olmanız gerekmektedir.

Kötü Niyetli Botları Engelleme

Bazı botlar sitenizi indeksleme dışında başka amaçlar taşıyabilir. Bu türdeki botları engellemek için aşağıdaki kodu .htaccess dosyanız içinde kullanabilirsiniz. Listede bulunan botlar arasında ekleme ve çıkarma yapabilirsiniz.

NOT: Botlar sadece örnek amaçlıdır.

<IfModule mod_rewrite.c>
RewriteEngine On
RewRiteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewRiteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewRiteCond %{HTTP_USER_AGENT} ^Download\Demon [OR]
RewRiteCond %{HTTP_USER_AGENT} ^Zeus [OR]
RewriteCond.*-[F]
</ifModule>

Yukarıda belirttiğimiz kodlar yardımıyla belirlediğiniz botların web sitenize ulaşmasını engelleyebilirisiniz. Eğer isterseniz de aşağıdaki kodlar yardımıyla botları bir başka URL'ye yönlendirebilirsiniz.

RewriteEngine On
RewRiteCond %{HTTP_USER_AGENT} ^BadBot [OR]
RewRiteCond %{HTTP_USER_AGENT} ^EvilScraper [OR]
RewRiteCond %{HTTP_USER_AGENT} ^FakeUser [OR]
RewriteRule^(.*)$http://go.away

Bu kod yardımı ile siteye gelen BadBot veya belirtilen diğer isimlerde gelen botlar olduğunda bu botlar var olmayan http://go.away adresine yönlendirilecektir.

Bir Tek Siteyi Engellemek

İnternet sitenize gelen trafik konusunda bazı durumlarda bir tek siteden gelen trafiği engellemek durumunda kalabilirisiniz. Bunu sağlamak için kullanabileceğiniz kod şu şekildedir.

RewriteEngine On
RewriteCond %{HTTP_REFERER} istenmeyensite\.com [NC]
RewriteRule.*-[F]

Birden Fazla Siteyi Engellemek

Trafiğin gelmesini engellemek istenilen site sayısı birden fazla ise aşağıdaki kodu kullanabiliriz.

RewriteEngine On
RewriteCond %{HTTP_REFERER} istenmeyensite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} istenmeyensite2\.com [NC]
RewriteRule.*-[F]

Ref-Link Saldırısını Önlemek

Arama motorları üzerinden web sitenize gelen bağlantılarda ?ref= şeklinde bir bağlantı bulunuyor ve sonrasında tanımadığınız bir site adı bulunuyorsa web sitenize Ref-Link saldırısı yapılıyor olabilir. Bu saldırıların amacı web siteniz üzerinden bir rant kazanmaktır. Bu durumu engellemek için aşağıdaki kodu kullanabilirsiniz.

RewriteCond %{THE REQUEST} \?(ref=.*)?\ HTTP [NC]
RewriteRule.? http://www.siteadiniz.com%{REQUEST_URI}?[R=301,L]

Bu kod ile sitenize gelen ve ?ref= ile başlayan bağlantıları istemediğinizi belirtmiş olacaksınız.

301 Canonical (non-www - to-www)

http://siteadiniz.com ile http://www.siteadiniz.com adresleri arama motorları tarafından birbirinden farklı adresler olarak görülür. Her ne kadar iki URL de aynı içeriğe ulaşmamızı sağlasa da bu tür URL ler yenilenen içerik (duplicated Content) olarak algılanabilir. Böyle bir durum arama motorları tarafından istenmediğinden içeriklerinizi tek bir URL altında yayınlanmasını sağlamalısınız. Web sitenizin http://www.siteadiniz.com gibi "www" ile kullanılmasını istiyorsanız aşağıdaki kodu kullanabilirsiniz.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.siteadiniz|.com$
RewriteRule(.*) http://www.siteadiniz.com/$1 [R=301,L]

bu kod sayesinde http://siteadiniz.com/sayfabasligi.html şeklinde gelen tüm URL'ler http://www.siteadiniz.com/sayfabasligi.html şeklinde bir URL'ye dönüştürülecektir.

301 Yönlendirme (Tek Sayfa)

Web sitenizde bulunan bir tek URL'yi başka bir URL'ye yönlendirmek istediğinizde aşağıdaki kodu kullanabilirsiniz
.
Redirect /kategori/eskisayfa.html http://siteadiniz.com/kategori/yenisayfa.html

301 Dizin Yönlendirme

Web sitenizde bulunan bir dizini başka bir dizine yönlendirmek istediğinizde aşağıdaki kodu kullanabilirsiniz.

Redirect /eskidizin http:siteadiniz.com/yenidizin

Hypertext Access yani .htaccess dosyası kullanımı internet siteleri için oldukça önemlidir. Doğru bir şekilde kullanıldığında web sitesi için faydalı olabileceği gibi bilinçsizlikle yada yeteri kadar bilgi sahibi olmadan Hypertext Access yani .htaccess dosyası içerisinde değişiklikler yapmak web sitenizin zararına olacaktır.

2 yorum:

  1. Yazılarınızı okuyarak bilgi sahibi oluyoruz. Güzel ve açıklayıcı paylaşımınız için teşekkürler hocam

    YanıtlaSil
  2. hocam teşekürler güzel bir makale bir sorum var benim sitemde seo sef link yaptım single.php de sorunsuz çalışıyor ama site üzerindeki başka klasörlere girdiğimde hata veriyor ve index.php deki resimleri yazıları listeliyor

    YanıtlaSil

© 2013 iPRESS. All rights resevered. Designed by Templateism