Apache’nin .htaccess(hypertext access) dosyası, web tasarımcıları için doğru kullanıldığında çok etkili bir araç. .Htaccess sunucu ile bağlantılı denetimlerinizi arttırmanın yanında, birçok alanda değerleri ve ayarları yapılandırmanıza imkan sağlayan bir dosya. .Htaccess her zaman root klasörüne eklenen bir parçadır, sunucunuzla olan iletişiminizde birçok değişikliğe ve ayara imkan sağlayan bir dosyadır. Sitenizin güvenliğini ve işlerliğini arttıran küçük ve etkili uygulamalar yapılabiliyor bu dosya ile bu yazıda da bundan bahsedeceğim. Fakat herşeye başlamadan önce belirtmek gerekiyor ki, .Htaccess’de değişiklikler web sitenizin bir miktar yavaşlamasına neden olabilir veya bazı aksaklıklar çıkabilir, hassas bir noktaya ayak basıyoruz sonuçta. Ama bu laflardan sonra korkmaya veya çekinceler yaratmaya gerek yok, uygulamalar oldukça basit ve oldukça etkili. .Htaccess ile yapılan ayarlar bazen sadece bu şekilde yapılabiliyor, işte bu uygulamalarda kullanmaktan başka şansımız yok. Bu dosya serverınızın denetimlerinin üzerine kendi istediğiniz değerleri ve denetimleri ‘yazdırabileceğiniz’ bir dosya.

.Htaccess dosyamız var mı? Varsa nasıl aktive edeceğiz? Neler gerekiyor bunu kullanabilmek için; ilk önce bu sorulara yanıt arayalım. Eğer server ayarlarına girebiliyorsanız .htaccessi üzerinde değişiklikler yapabilir hale de getirebilirsiniz. Apache2 host konfigürasyonu dosyasını açın. Burda size olan izinleri ‘sudo’lamanız gerekiyor. (sudo: unix sistemlerde root şifresi vermeden belirli komutların belirli kullanıcı/grup tarafından çalıştırılmasını sağlayan bir araçtır)

sudo nano /etc/apache2/sites-available/default
Dosyanın içine girdiğinizde, altta gördüğünüz dizgiyi bulun, Allowoverride yazan değeri None to All olarak değiştirn. Dizge şimdi şöyle gözükmeli:

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all



Kaydedin ve çıkın, Apache’yi yeniden başlatın:

sudo service apache2 restart


Htaccess dosyası yaratmak

.htaccess dosyasını herhangi bir text editorde yapabilirsiniz. .Htaccess olarak isimlendirin başka hiç bir şey eklemeyin. Ardından Ftp clientınızla sitenize yükleyin.

Alternatif bir yöntem olarak şu kodu kullanabilirsiniz, örnek.com yerine kendi sitenizin ismini yazarak .htaccess dosyasnızı da oluşturabilirsiniz:

sudo nano /var/www/example.com/.htaccess


Herşeye başlamadan önce önerim sitenizin son halini backup alın, birşeyler kötüye giderse böylece geriye döndürebilirsiniz.

File Manager’ın açmak için
Cpanele bağlanın. Dosyalar kısmında File manager ikonuna tıklayın. Document Root For seçeneğini, seçmeli menüden bulun ve seçin. Gizli dosyaları göster seçeneğinin açık olmasına dikkat edin ve Go’ya tıklayın. File manager şimdi yeni bir sekmede veya pencerede açılacak. .htaccess dosyasını listede arayıp bulun. Aşağı doğru scrollamanız gerecektir. Yerini bulduğumuza göre artık herhangi bir metin editörü ile optimizasyonlara başlayabiliriz. Windows kullanıyorsanız notepad kullanmanızı öneriyorum. Mac kullanıyorsanız, Textwrangler gibi bedava olan metin editörü programlarından birini kullanın.

.Htaccess içinde yapılacak değişikliklere başlamak için
.Htaccess dosyasına sağ tıklayarak ve ‘code edit’i menüden seçenerek .htaccess içinde değişiklikler yapmaya başlayabiliriz.

Htaccess ile yapılabilecekler:

Tüm kodları ingilizce anlatırmışçasına yazıyorum, google çeviri araçlarıyla başkaları da belki ilgilenebilir diye, altta kodların detayları hakkında açıklamalar ekliyorum bu yüzden.

Dosya Şifreleme

Öncelikle bir .htpasswd dosyasına ihtiyacınız var, bunu oluşturmak için en kolay yol şu sitedeki online aracı kullanmak: http://www.tools.dynamicdrive.com/password/

İstediğiniz kullanıcı ismini sol kısma yazın, ve o yazdığınız kişinin şifresini ise sağdaki kısma yazın.
path to .htpasswd kutucuğuna şifrelemek istediğiniz veriyi seçin ve bir dosya içine yerleştirin. Bu dosyayı anasayfa/kullanıcıismim yapmak genelde en iyi seçenek oluyor.

Submite tıklayın ve yüklediğiniz .htpasswd dosyasını bklasörün içine, anasayfa/kullanıcıismim atın. Bu işlem bittiğinde .htaccess dosyasınızın içine şunları yazın.

AuthUserFile /home/myusername/.htpasswd

AuthName EnterPassword

AuthType Basic

require user some_users_name
Some users name kısmına tabii ki kendi belirlediğiniz kullanıcı ismini yazacaksınız.

Kullanıcıları IP adresleriyle erişimleri engellemek

Şu 4 kodu .htacess içine yazın:

Order allow, deny

Deny from 111.222.333.444

Deny from 555.666.777.888

Allow from all



Tabii deny from dediği kısımlara, erişimini engellemek istediğiniz IP numarasını yazacaksınız.

Kullanıcıları refererlarına göre bloklamak

Şu kodları .htaccess’e ekleyin

RewriteEngine On

RewriteCond %{HTTP_REFERER} somedomain\.com [NC]

RewriteRule .* – [F] Somedomain.com refere edilen site herhangi bir site anlamına geliyor buraya da hangi siteden gelen kullanıcıları engellemek istiyorsak o siteyi ekliyoruz.
Eğer birden fazla siteden gelen kullanıcıları engellemek istiyorsanız:

RewriteEngine On

RewriteCond %{HTTP_REFERER} somedomain\.com [NC,OR]

RewriteCond %{HTTP_REFERER} anotherdomain\.com [NC,OR]

RewriteCond %{HTTP_REFERER} 3rdDomain\.com [NC]

RewriteRule .* – [F] somedomain 1, anotherdomain 2., 3rddomain 3. Site, bu şekilde bir liste ile sitelerden gelen akışı durdurabiliyoruz.

Sondaki satırlar hariç hepsi [NC,OR] ve [NC] ile sonlanması gerektiğini unutmayın.

İndex.htmlden farklı bir şeyi default page haline getirmek

Home.html örneğin ana sayfanız olsun istiyorsunuz:

DirectoryIndex. home.html
Bu kodu dosyaya yerleştirin.

Eski bir domaini yeni bir domaine 301 yönlendirmesi yapmak

RewriteEngine on

RewriteCond %{HTTP_HOST} ^olddomain.com [NC,OR]

RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC]

RewriteRule ^(.*)$ http://www.newdomain.com/ $1 [R=301,NC]



Old domain’de eski sitenizin ismi, newdomain kısmında da yeni sitenizin ismi yazmalı. Bu komut eski sitenizden yeni sitenize tüm linkleri 301 yönlendirmesiyle başında www. ile taşınmasını sağlayacaktır.

Birilerinin sitenizdeki kaynakları, içerikleri hotlinklemesini engellemek

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]

RewriteRule \.(gif|jpg|js|css)$ – [F]



GIF, JPG, JS, and CSS gibi tüm dosyaların hotlinklenmesini bu komut engelleyecektir. Mydomain’de yine kendi sitenizin ismi geçmeli.

Tüm sayfaları HTTPS:// den HTTP:// ye yönlendirmek için

RewriteEngine on

RewriteCond %{SERVER_PORT} !^80$

RewriteRule ^(.*)$ https://www.domain.com/ $1 [NC,R=301,L]



Tüm sayfaları HTTp:// den HTTPS:// ye yönlendirmek

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^(.*)$ http://www.domain.com/ $1 [NC,R=301,L]



Bir URLyi HTTPS:// den HTTP:// ye yönlendirmek



RewriteEngine on

RewriteCond %{HTTP_HOST} !^80$

RewriteCond %{HTTP_HOST} ^www.domain.com/mypage.html [NC]

RewriteRule ^(.*)$ http://www.domain.com/mypage.html [NC,R=301,L]



Son olarak:

.htaccess dosyasını olabildiğince küçük tutmaya çalışın. Çünkü her dosya isteğinde sunucu tarafından kontrol edilirler. Ve boyutun büyümesi yavaşlamaya neden olabilir.

.htaccess dosyasını düzenli tutmaya çalışın. Kurallar arttıkça sunucunun dosyayı anlaması zorlaşacaktır. # kullanarak her bölüme açıklama yazın.

.htaccess kurallarının alt klasörlerde de geçerli olduğunu, alt klasördeki .htaccess kuralının ise üzerindeki kuralları değiştirebileceğini düşünün.

Kaynak: http://www.seocu.com/htaccess-kullanimi-ve-guvenlik/