.htaccess Nedir ve Ne İşe Yarar?
Bu rehber, .htaccess dosyasının ne olduğunu, nerede ve neden kullanıldığını, sık kullanılan örnek kuralları ve güvenli düzenleme ipuçlarını yeni başlayanlar için adım adım açıklar. Teknik ayrıntılar ve pratik örneklerle, .htaccess ile web sunucunuzu nasıl daha güvenli, hızlı ve SEO dostu hale getirebileceğinizi öğreneceksiniz.
.htaccess Nedir?
.htaccess (açılımı: Hypertext Access), Apache web sunucuları tarafından kullanılan bir dizin bazlı yapılandırma dosyasıdır. Web sunucusunun belirli bir dizin ve alt dizinler için davranışını değiştirmeye yarar. Sunucu seviyesindeki bazı ayarları merkezi yapılandırmaya erişmeden doğrudan dizin içinde kontrol etmenizi sağlar.
Temel işlevleri
- URL yönlendirmeleri ve yeniden yazma (friendly URL'ler)
- Özel hata sayfaları (404, 500 vb.)
- Erişim kontrolü (IP engelleme, dizin listelemeyi kapatma, temel kimlik doğrulama)
- Önbellekleme ve sıkıştırma ayarları
- MIME türü ve içerik güvenliği başlıkları ekleme
Neden .htaccess Kullanılır? (Avantajlar ve Sınırlamalar)
Avantajlar:
- Hızlı yapılandırma değişikliği: Sunucu yapılandırmasını yeniden başlatmadan dizin bazlı ayar uygulama.
- Taşınabilirlik: Paylaşılan hosting ortamlarında kullanıcı düzeyinde kontrol sağlar.
- İnce ayar yapma: Yönlendirme, güvenlik ve performans kurallarını proje bazında uygulama.
Sınırlamalar:
- Performans: Çok sayıda veya karmaşık kurallar sunucu performansını etkileyebilir.
- Sunucu bağımlılığı: Sadece Apache (ve bazı Apache uyumlu sunucular) için geçerli.
- Yetki kısıtları: Sunucuda AllowOverride kapalıysa .htaccess etkisiz olabilir.
Yaygın .htaccess Kullanım Örnekleri
Aşağıda yeni başlayanlar için en sık kullanılan .htaccess kurallarına kısa örnekler veriyoruz. Bu örnekler öğretici amaçlıdır; canlı sunucuda uygulamadan önce yedek almayı unutmayın.
1) Temel yeniden yönlendirme (301)
Redirect 301 /eski-sayfa.html /yeni-sayfa/
2) mod_rewrite ile URL yeniden yazma (friendly URLs)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
3) Özel hata sayfaları
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
4) Dizin listelemeyi kapatma
Options -Indexes
5) IP engelleme
Order Allow,Deny
Deny from 192.0.2.0
Allow from all
6) Basit HTTP kimlik doğrulama (Basic Auth)
AuthType Basic
AuthName "Kilitli Alan"
AuthUserFile /path/to/.htpasswd
Require valid-user
7) Önbellekleme ve sıkıştırma (performans)
# Gzip sıkıştırma (mod_deflate)
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
# Tarayıcı önbellekleme (Expires)
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
.htaccess Dosyası Nasıl Oluşturulur ve Düzenlenir?
- Dosya oluşturma: Basit bir metin editörü ile .htaccess isimli bir dosya oluşturun. (Başında nokta olduğuna dikkat edin.)
- Konum: Kuralların hangi dizine uygulanacağını belirlemek için dosyayı ilgili dizine koyun. Ana dizine koyarsanız tüm site için geçerli olur.
- İzinler: Genelde 644 (rw-r--r--) uygundur; 777 gibi aşırı izinlerden kaçının.
- Yedekleme: Değişiklik yapmadan önce mevcut .htaccess dosyasının bir kopyasını alın.
- Test etme: Değişikliklerden sonra tarayıcı önbelleğini temizleyin ve site davranışını kontrol edin. Hata durumunda geri alabileceğiniz bir yedeğiniz olsun.
Dikkat Edilmesi Gereken Teknik Noktalar
- AllowOverride: Apache ana yapılandırmasında AllowOverride None ise .htaccess kuralları çalışmaz. Bu durumda sunucu yöneticisi veya hosting sağlayıcınızla iletişim gerekebilir.
- mod_rewrite ve mod_deflate gibi modüller: Bazı kurallar ilgili modül yüklü değilse hata verir veya çalışmaz.
- Yazım hataları 500 Hatasına yol açar: Yanlış bir direktif 500 Internal Server Error döndürebilir; bu yüzden küçük değişikliklerle ilerleyin.
- Performans: Çok sayıda .htaccess dosyası ve karmaşık kurallar sunucuya ek yük bindirebilir; mümkünse ana Apache konfigürasyonuna taşımak daha performanslıdır.
SEO ve Performans İçin İpuçları
- 301 yönlendirmelerini doğru kullanın: Kalıcı yönlendirmeler arama motoru değerini korur.
- Canonical yönlendirmeleri: Yinelenen içerik için tercih edilen URL'ye yönlendirme yapın.
- Gzip ve önbellekleme: Sayfa yükleme sürelerini azaltmak için sıkıştırma ve expires başlıklarını kullanın.
- XML site haritaları ve robots.txt: Bu dosyalar .htaccess dışında olsa da yönlendirme ve erişim kuralları ile uyumlu çalışmalıdır.
Sık Karşılaşılan Hatalar ve Çözümleri
- 500 Internal Server Error: Genellikle söz dizimi hatası. Son yaptığınız değişiklikleri geri alın ve hata günlüklerini kontrol edin.
- Kural çalışmıyor: mod_rewrite etkin mi? AllowOverride ayarı doğru mu? Test etmek için basit bir kuralla başlayın.
- Beklenmeyen yönlendirme döngüleri: Yönlendirme kurallarını işlerken hedef URL'leri kontrol edin; koşulları (RewriteCond) doğru kullanın.
Sonuç
.htaccess, Apache tabanlı ortamlarda güçlü ve esnek bir araçtır. Doğru kullanıldığında URL yönetimi, erişim kontrolü, performans optimizasyonu ve güvenlik iyileştirmeleri için etkili bir yöntem sunar. Ancak üretim ortamında değişiklik yapmadan önce mutlaka yedek alın, küçük adımlarla ilerleyin ve sunucu yapılandırmasıyla uyumluluğu kontrol edin. Bu yaklaşım, hem sürdürülebilir hem de güvenli bir yönetim stratejisi sağlar.
İleri adım önerisi: Değişiklikleri test etmek için yerel bir Apache ortamı kurun veya staging (test) sunucusunda denemeler yapın. Böylece canlı sitede beklenmeyen kesintilerin önüne geçersiniz.