.htaccess, Apache web sunucusunun klasör bazlı yapılandırma dosyasıdır.
Bulunduğu dizini ve alt klasörleri etkiler; sunucuyu yeniden başlatmaya gerek kalmadan değişiklikler
anında devreye girer. URL yönlendirmesinden HTTPS zorunluluğuna, dosya engellemeden cache kurallarına
kadar pek çok ayarı buradan yönetebilirsiniz. Adı noktayla başladığı için gizli dosyadır
ve File Manager'da varsayılan olarak görünmeyebilir.
1. File Manager Üzerinden Düzenleme
- cPanel'e giriş yapın.
- Dosyalar bölümünde File Manager'a tıklayın.
- İlk açılışta sağ üstte Settings'e tıklayıp Show Hidden Files (dotfiles) seçeneğini aktif edin. Yoksa
.htaccesslistede görünmez. public_htmldizinine girin..htaccessdosyasını seçin ve üstteki Edit ya da Code Editor'a tıklayın (kod renklendirmeli düzenleme için Code Editor önerilir).- Değişikliği yapın ve Save Changes'e basın. Değişiklik anında aktif olur, tarayıcıyı yenileyerek test edebilirsiniz.
.htaccess.bak oluşturmak en pratik yöntemdir). Tek bir yazım
hatası 500 Internal Server Error verebilir ve tüm site açılmaz hâle gelir.
2. Sık Kullanılan .htaccess Örnekleri
HTTP'den HTTPS'e otomatik yönlendirme:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
www'siz versiyona yönlendirme (örn. www.siteniz.com → siteniz.com):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
www'li versiyona yönlendirme (tam tersi):
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Tek sayfa için 301 yönlendirme:
Redirect 301 /eski-sayfa.html /yeni-sayfa.html
Özel 404 sayfası:
ErrorDocument 404 /404.html
3. Güvenlik Kuralları
Dizin listelemeyi kapatma (index dosyası olmayan klasörlerde dosyaların listelenmesini engeller):
Options -Indexes
Hassas dosyalara erişimi engelleme (.env, config.php, wp-config.php gibi):
<FilesMatch "^(\.env|\.git|wp-config\.php|config\.php)$">
Require all denied
</FilesMatch>
Belirli bir IP'yi engelleme:
<RequireAll>
Require all granted
Require not ip 192.0.2.10
</RequireAll>
4. WordPress ve cPanel Otomatik Blokları
Sitenizde WordPress kullanıyorsanız .htaccess dosyasında şuna benzer bir blok bulursunuz:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
...
</IfModule>
# END WordPress
Bu bloğu silmeyin ya da elle düzenlemeyin; WordPress permalink ayarı kaydedildiğinde
otomatik olarak yeniden üretilir. Aynı şekilde cPanel PHP sürüm seçimi yaptığınızda
# php -- BEGIN cPanel-generated handler ile başlayan bir blok da eklenir; bu da
otomatik yönetilir.
Kendi kurallarınızı bu otomatik blokların dışına (üstüne veya altına) yazın. Aksi halde WordPress veya cPanel bloğu güncellediğinde değişiklikleriniz silinir.
5. 500 Internal Server Error Aldıysanız
Düzenleme sonrası site beyaz ekran veya 500 hatası veriyorsa neredeyse her zaman .htaccess'te bir yazım hatası vardır. Çözüm:
- File Manager'a girin,
.htaccessdosyasını yedek (.htaccess.bak) ile değiştirin. - Yedeğiniz yoksa dosyayı geçici olarak
htaccess-eski.txtşeklinde yeniden adlandırın. Site bu sayede default Apache yapılandırmasıyla açılır. - Hatalı satırı bulup düzeltin, sonra dosyayı tekrar
.htaccessolarak adlandırın.
.htaccess kuralı yazarken takıldığınız bir nokta varsa destek talebi açıp ulaşmak istediğiniz davranışı yazabilirsiniz; ekibimiz uygun kuralı önerip uygulamanızda yardımcı olur.