.htaccess 500 Internal Server Error Hatası ve Kesin Çözüm Yolları
500 Internal Server Error hatası, web sitenizin erişilememesine neden olan genel bir sunucu hatasıdır. Bu hata .htaccess dosyasındaki bir sorun nedeniyle ortaya çıkabiliyor. Bu rehberde, hatanın kökenini hızla tespit edip güvenli ve sürdürülebilir şekilde çözmeniz için adım adım yöntemler sunuyorum.
Giriş — Neden .htaccess Kaynaklı 500 Hataları Oluşur?
.htaccess, Apache tabanlı sunucularda yapılandırma düzeyinde URL yönlendirmeleri, yeniden yazım kuralları, yetkilendirme ve daha fazlasını kontrol eder. Ancak yanlış bir direktif, uyumsuz modül ya da bozulmuş dosya 500 hatasına yol açabilir. Aşağıdaki nedenler en sık karşılaşılanlardır:
- Yanlış .htaccess sözdizimi veya uyumsuz Apache modülleri (ör. mod_rewrite olmadan rewrite kuralları).
- Bozuk veya hatalı oluşturulmuş özel direktifler (ör. php_value gibi paylaşılan hosting'lerde desteklenmeyen ayarlar).
- Dosya izinleri veya sahibi (ownership) yanlış ayarlanmış.
- PHP bellek yetersizliği ya da hatalı PHP yapılandırma değişiklikleri.
- WordPress gibi CMS'lerde eklenti/tema uyumsuzlukları veya çekirdek dosya bozulmaları.
Hazırlık — Hata Çözümüne Başlamadan Önce Yapılması Gerekenler
- Yedek alın: .htaccess ve web kök dizininin yedeğini alın.
- Hata günlüklerini inceleyin: Apache/PHP error.log dosyaları en net ipuçlarını verir.
- Sunucu erişimi: FTP/SFTP veya SSH erişiminizin olduğundan emin olun.
Adım Adım Çözümler
1. Hata Günlüklerini Kontrol Edin
İlk adım daima error.log dosyasını incelemektir. Hata kaydı, hangi dosya veya direktifin hataya yol açtığını genellikle açıklar.
2. .htaccess Dosyasını Geçici Olarak Devre Dışı Bırakın
Bu test, hatanın gerçekten .htaccess kaynaklı olup olmadığını netleştirir.
- SSH/FTP ile web kök dizinine gidin ve .htaccess dosyasının adını değiştirin, örneğin:
.htaccess.bak. - Siteyi tekrar yükleyin. Hata giderilmişse sorun .htaccess içindedir.
3. Boş veya Temiz Bir .htaccess Oluşturun
Özellikle WordPress için basit bir yeniden yazım kural seti deneyin (gerektiğinde CMS'nize uygun minimal kuralları kullanın):
# Örnek (WordPress için minimal)
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Eğer minimal .htaccess ile site çalışıyorsa, orijinal dosyayı satır satır kontrol ederek hatalı direktifi bulun.
4. Desteklenmeyen Direktifleri Kontrol Edin
Paylaşılan hostinglerde php_value, php_flag gibi direktifler desteklenmeyebilir. Bunlar 500 hatası verir. Bu tür satırları geçici olarak kaldırın.
5. Apache Modüllerini ve Sunucu Konfigürasyonunu Doğrulayın
- mod_rewrite gibi .htaccess içinde kullanılan modüllerin yüklü ve etkin olduğundan emin olun.
- Sunucu yöneticinizle veya hosting paneliyle AllowOverride ayarının .htaccess kullanımına izin verdiğini doğrulayın.
6. Dosya İzinlerini ve Sahipliğini Kontrol Edin
Yanlış izinler 500 hatasına yol açabilir. Önerilen izinler:
- Dosyalar: 644
- Dizinler: 755
SSH ile örnek komutlar:
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
7. PHP Bellek Limitini Artırın
Bazen 500 hatası PHP bellek tükenmesinden kaynaklanır. php.ini veya hosting panelinden bellek limitini artırmayı deneyin (ör. memory_limit = 256M). Paylaşılan ortamlarda bunu .htaccess üzerinden yapmaya çalışmak desteklenmeyebilir.
8. CMS Özel Adımları (Örneğin WordPress)
- Eklentileri devre dışı bırakın: Tüm eklenti klasörünün adını değiştirerek topluca devre dışı bırakın. Hata kaybolursa eklentileri tek tek aktifleştirerek suçluyu bulun.
- Temayı geçici değiştirin: Tema kaynaklı bir problem olabilir.
- wp-config.php hata ayarları: Geliştirme ortamında WP_DEBUG ve hata günlükleme açılarak daha fazla bilgi alınabilir.
9. Satır Sonları ve Karakter Kodlaması
Windows kaynaklı CRLF satır sonları veya UTF-8 BOM içeren dosyalar Apache tarafından sorun yaratabilir. .htaccess dosyasını UTF-8 (BOM'suz) ve LF satır sonlarıyla kaydedin.
Sık Karşılaşılan Senaryolar ve Hızlı Çözümleri
- Hata: Yeni .htaccess değişikliğinden sonra 500 — Değişikliği geri al ve Apache hata günlüklerini kontrol et.
- Hata: Paylaşılan hostingde php_value satırı — Bu satırı kaldır veya php.ini üzerinden değişiklik yap.
- Hata: Eklenti güncellemesinden sonra 500 — Eklentiyi devre dışı bırak, eski sürüme dön veya geliştirici ile iletişime geç.
Sonuç — Hızlı Özet ve Kalıcı Önlemler
.htaccess kaynaklı 500 Internal Server Error hatasını çözmek sistematik bir yaklaşım gerektirir: önce günlükleri oku, sonra .htaccess'i izole et, minimal yapılandırmayla test et ve adım adım sorun çıkarma yap. Yedekleme politikaları, sürüm kontrolü (ör. .htaccess üzerinde değişiklikleri takip etmek) ve test/önizleme ortamı kurmak, bu tür kesintilerin tekrarlanma riskini azaltır.
Bu adımları uyguladıktan sonra hata devam ediyorsa, sunucu hata günlükleri ile birlikte barındırma sağlayıcınız veya sistem yöneticinizle paylaşarak daha derin bir analiz talep edin.
Not: Bu kılavuz teknik ve operasyonel bir rehberdir; üretim ortamında değişiklik yapmadan önce her zaman tam yedek alın.