.htaccess Örnek Kodları (301, SEO Uyumlu URL vb)
.Htaccess dosyasi nedir?
.Htaccess dosyası bir SlimCleaner dosyası olarak bilinmektedir. (sadece Apache olarak da adlandırılır) bu dosya çok güçlü ve Apache tarafından sunulmuş olan web sayfalarının pek çok farklı yönünü kontrol etmeye destek olmak maksadı ile kullanılmaktadır. Belirtilerin bu yönlendirmeleri hosting kurma, yönetme ve daha fazlasını içinde barındırmaktadır.
.Htaccess dosyasi nerede yer alır?
Web sunucunuzun kök klasörünün içinde bir .htaccess dosyası yer almalıdır. Bu web sayfanızın içeriğini tutan bir klasördür (genel olarak / www ya da / public_html).
Hosting hesabınızın içinde birden çok htaccess dosyası yer alabilir ancak, her bir klasörde ya da dizinde sadece bir tane yer alabilir. Örnek verecek olursak, kök klasörünüzün içinde ay bir tane .htaccess dosyası ve alt bir klasörün içinde farklı bir dosya yer alabilir. Bu, dizin yapısına göre birçok farklı sunucu davranışlarına ayar yapmanızı sağlamaktadır.
.htaccess dosyası oldukça güçlü bir dosyadır ancak, doğru bir şekilde korunmuyorsa değiştirilebilir ve erişim sağlanabilir. Bu dosyanın içine erişimi engelleyebilmek için doğru adımlar attığınızdan emin olmalısınız.
.Htaccess dosyamı bulamıyorum
İlk olarak .htaccess’in bir Apache dosyası olduğunu bilmemiz gerekir. Bu yalnızca Apache sunucusunun içinde bulabileceğiniz bir dosya anlamına gelir. Ana bilgisayarınız eğer farklı bir sunucu yazılımı (Örnek verecek olursak NGINX ya da Microsoft IIS) üzerinde çalışıyorsa, hemen aramayı durdurmalısınız.
Genellikle başında nokta ile başlayan işlemler gizli dosya anlamına gelir. Bu da varsayılan olarak görünmez dosyalar olduklarını ifade eder.
htaccess kullanımı, bazı örnek ipuçları ve komutlar
.htaccess dosyasının içine gireceğiniz direktiler, .htaccess dosyasının yer aldığı dizini ve onun altındakileri de etkiler. Bu nedenle .htaccess dosyasını meydana getirdiğiniz dizine oldukça dikkat etmeniz gerekmektedir. Örnek verecek olursak üyeler / klasörünü şifreleyebilmek için .htaccess dosyasını üyeler klasörünün içinde değil de ana dizinin içinde yani public_html oluşturursanız sitenize ilk giriş yapıldığında parola ekranı karşınıza çıkacaktır. Şifreleme işlemlerini kontrol paneli içinden de gerçekleştirebileceğinizi unutmayın.
.htaccess dosyası içerisinde bazı değişiklikler yaparak Linux web Hostin üstünde bulunan sitenizde gizli klasörler oluşturabileceğinizi, hotlinking’i (doğrudan dosya erişimi anlamına gelir) engelleyebileceğinizi, hatta zarar veren botlardan bile korunabileceğinizi bilmeniz gerekir.
.htaccess dosyası (Hypertext Access), Apache’nin klasör düzeyinde bulunan ayarlara izin veren, genel ayar dosyaları içerisindeki direktifleri özelleştirme becerisi olan bir dosyadır.
Ftp bağlantısı kurarak yeni bir dosya meydana getirip, ismini “.htaccess” olarak değiştirmeniz ve içine direktifleri girmeniz yeterli olacaktır. Aşağıda bazı uygulama örneklerine değindik.
1. Klasörlere Erişim
Bir klasörün içine bütün erişimleri engellemek istiyorsanız (mesela program kaynak kodlarını içeren bir klasörünüz var diyelim; böyle bir durumda klasöre internet üzerinden değil, sadece dosya sisteminden erişmek isteyebilirsiniz) klasörün içinde bir .htaccess dosyası meydana getirip içine:
#deny all access
deny from all
yazmanız yeterli olur. Eğer bu klasör sadece belirlemiş olduğunuz IP adresiyle ya da IP bloğu tarafından erişim sağlamasını istiyorsanız.
#deny all access
deny from all
allow from 10.0.0.1 # tek ip adresi
allow from 192.168.0.0/24 # ip bloğu
yazmanız yeterli olacaktır. Sadece bir tek dosya için erişimi engellemek için ise yapmanız gereken:
<Files private.html>
Order allow,deny
Deny from all
</Files>
2. Klasör Listelemek
Herhangi bir klasörde yer alan dosyaların listelenmesini istiyorsanız, .htaccess dosyasının içine şu kodları yazmanız gerekmektedir.
Options +Indexes +MultiViews +FollowSymlinks
<ifmodule mod_autoindex.c>
IndexOptions FancyIndexing
</ifmodule>
Klasördeki ön tanımlı listelemeyi iptal etmek için ise şu satır yeterli:
Klasörün içindeki ön tanımlı listeleme işlemini iptal etmek için ise şu şekilde bir satır yeterli olacaktır:
IndexIgnore *
3. Sıkıştırma
Sitenizdeki bant genişliğini koruma altına almak için bir php özelliği olarak bilinen sıkıştırma yöntemini kullanabilirsiniz. .htaccess dosyasına şunu eklemeniz yeterli olacaktır:
<ifModule mod_php4.c>
php_value zlib.output_compression 16386
</ifModule>
4. Dosyaları Gizlemek
Belirli olan dosyalara erişimi engelleyebilmek için Files direktifinin yanında Regular Expression kullanmanız mümkündür. Örnek verecek olursak konfigürasyon dosyalarının içine, robot.txt ya da log’lara erişimi engellemek istiyorsanız aşağıdaki örnek tabloda yer alan .ht ile başlayan dosyalara erişimi engelleme yöntemidir.
<Files ~ “^\.ht”>
Order allow,deny
Deny from all
Satisfy All
</Files>
5. Özel HTTP 404 Hata Sayfası
Kullanıcılarınız “404 sayfa bulunamadı” hatası ile karşılaştığınızda sizin istemiş olduğunuz bir dosyaya yönlendirmesini sağlamak için şu kodu kullanabilirsiniz.
ErrorDocument 404 /errors/notfound.html
Bunu kullanarak hata kodlarınızı da özelleştirebilirsiniz. Dikkat! İnternet Explorer 512 bayttan daha küçük bir hata sayfası ile karşılaştığınız zaman, MSN search gibi bağlantıların yer aldığı kendi hata sayfasını ziyaretçiye göstermektedir. Belirtmiş olduğunuz hata sayfasının 512 bayttan büyük olduğuna kesinlikle emin olun.
6. Hotlinking’i Engellemek
Hostinking basit bir tabirle sitenizde yer alan bir resmi veya videoyu başka bir web sayfasının göstermesi anlamına gelir. Böyle bir durumda olan sizin bandwidth’inize olur. Örnek verecek olursak siteniz haricinde kullanılan bazı dosyalara erişimi engelleyip “nohotlink.gif” isminde bir resim dosyasını gönderen şu koda bir göz atalım:
<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>
Basitçe bu kod siteniz.com haricinde çağılırmış olan zip, mp3 ve video dosyaları yerine “nohotlink.gif” dosyalarını göstermektedir. Dikkat! Eğer resim hotlinklerinize engel koyarsanız site haricinde istenen bütün resimleri de engellemiş olacaksınız. Böyle bir durumda mesela feedburner gibi bir hizmetten faydalanıyorsanız böyle bir hizmet için kodunuzu değiştirmeniz gerekmektedir.
7. no-www Desteği
Sitelerde sizde www subdomainin kullanılmasına karşı çıkıyorsanız bu kod işinizi bir hayli görecektir:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.example\.com[nc]
RewriteRule ^(.*)$ http://example.com/$1 [r=301,nc]
</ifModule>
8. Hangi Dili Kullanıldığını Saklamak
Dosyanızın içimdeki uzantıları değiştirip .htaccess dosyasının içine bir kural ilave ederek hangi dili kullandığınızı kullanıcılarınızdan gizleyebilirsiniz. Aşağıda vermiş olduğumuz örnek sayesinde .133t uzantılı dosyalar aynı PHP dosyaları gibi işlenmeye başlayacaktır.
# Make PHP code look like unknown types
AddType application/x-httpd-php .133t
9. Değişik İpuçları
.htaccess dosyasını olabildiği kadar küçük tutmaya özen gösterin. Nedeni ise her dosya istendiğinde sunucu tarafından kontroller sağlanabilir.
.htaccess dosyasını her zaman düzenli bir biçimde tutun. Çünkü kurallar artmaya başladıkça anlaması daha da zorlaşacaktır. # kullanarak her bir bölüme açıklamalar yazın.
Yeniden URL’yi tanımladığınız, önceki sayfaya yönlenen kuralların içine (Nohotlink örneği gibi) [L] özelliklerini ilave edin. Bu, sunucunun içine başka bir kural uygulaması gerektiğini ifade eder.
.htaccess kurallarının alt klasörlerde de geçerlilik kazandığını, alt klasörlerde yer alan .htaccess kurallarının ise üstünde yer alan kurallarını değiştirebileceğini düşünmeniz gerekir.
10. .htpasswd ile Şifre Koruma
İstediğiniz klasör veya dosyaya şifre ilave etmek için şu adımları takip edebilirsiniz:
Şifrelemek istediğinşz klasörün içinde .htpasswd dosyası oluşturun. Dosyanın içeriği kullanıcı adı: şifre şeklindedir. Kullanıcı adı olan bölüm düz bir metindir. Şifrenin ise şifrelenmiş olası gerekmektedir. Şifrenizi elde edebilmek için şu adresten yararlanabilirsiniz. Dosyayı kendi bilgisayarınızda meydana getirip sunucuya upload yaptıysanız SCII mode programı kullandığınızdan kesinlikle emin olun.
Şimdi ise .htaccess dosyanızı düzenlemeye başlayın. Kural, düzenlemiş olduğunuz dosyanın yer aldığı klasörde ve alt klasörlerinde şifreleme geçerli olacaktır.
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName “My Secret Folder”
<LIMIT GET POST>
require valid-user
</LIMIT>