- Konu sahibi
- #1
.htaccess değişikliğinden hemen sonra HTTP 500 alıyorsanız sorun genellikle hatalı sözdizimi, sunucuda etkin olmayan bir Apache modülü, izin verilmeyen bir yönerge veya hatalı yönlendirme döngüsüdür. Önce isteğin zamanını Apache hata günlüğüyle eşleştirin; ardından son değişikliği çalışan kopyayla karşılaştırıp yalnızca hatalı bölümü düzeltin. Canlı sitede tüm dosyayı devre dışı bırakmak erişim kısıtlamalarını da kaldırabilir.İlk teşhis: Hata gerçekten.htaccess kaynaklı mı?
- Hata veren URL’yi ve hata zamanını not edin; ilgili alan adının Apache hata günlüğünü açın.
- Dosyayı değiştirmeden önce yerel bilgisayarınıza veya web üzerinden erişilemeyen bir konuma geri dönüş kopyası alın. Web köküne açık bir yedek uzantısı bırakmayın.
- Günlükte bildirilen dosya, satır ve yönergeyi son değişiklikle karşılaştırın. Dosyanın üst dizinlerdeki kurallardan etkilenebileceğini unutmayın.
- Yalnızca son hatalı değişikliği geri alın veya doğrulanmış çalışan kopyaya dönün; kimlik doğrulama ve erişim kurallarını topluca kaldırmayın.
- Aynı isteği yeniden yapın ve yeni günlük kaydını kontrol edin. Kuralları bölüm bölüm ayırmak gerekiyorsa bunu erişimi kısıtlı bir test kopyasında yapın.
.htaccess hatasını kanıtlamaz; hata günlüğündeki bileşen ve dosya yolunu esas alın.En sık nedenler ve doğru karar
| Belirti | Muhtemel neden | Uygulanacak karar |
|---|---|---|
| Değişiklikten hemen sonra 500 | Sözdizimi hatası veya hatalı tırnak | Son eklenen satırı ve bir önceki satırı kontrol edin |
| “not allowed here” benzeri kayıt | AllowOverride veya AllowOverrideList kısıtlaması | Hosting yöneticisinden ilgili yönergeye izin verilmesini isteyin |
| Rewrite satırlarından sonra 500 | mod_rewrite eksikliği, yanlış bayrak veya döngü | Kuralı tek başına test edin ve yönlendirme hedefini inceleyin |
| Her istekte tekrar tekrar yönlenme | Kural kendi hedefini yeniden yakalıyor | İstisna kuralı ekleyin veya hedef koşulunu daraltın |
| Son değişiklik geri alındı, log hâlâ boş | Yanlış log dosyası veya üst dizindeki kural | Vhost logunu ve üst dizinlerdeki .htaccess dosyalarını kontrol edin |
.htaccess içinde kullanılan yönergeleri ana yapılandırmadaki kurallara göre değerlendirir. Bu nedenle bir yönergenin Apache tarafından tanınması tek başına yeterli değildir; bulunduğu dizin için ilgili AllowOverride sınıfı veya AllowOverrideList izni de verilmiş olmalıdır.İçeriği güvenli biçimde daraltma
Günlük mesajını üç parçaya ayırın: hatanın bildirildiği dosya, yönerge adı ve gerekçe. Örneğin varsayımsal bir
Invalid command RewriteEngine mesajında önce modülün kullanılabilirliğini; not allowed here mesajında ise yönergenin bu bağlamdaki izinlerini araştırırsınız. Bunlar gerçek bir sunucudan alınmış test sonuçları değil, mesajları yorumlama örnekleridir.Dosyayı yalnızca bir
DirectoryIndex satırına indirip ana sayfanın açılmasını “dosya okunuyor” kanıtı saymayın. Aynı sayfa sunucunun varsayılan ayarlarıyla da açılabilir. Üstelik dosyanın geri kalanını kaldırmak güvenlik ve uygulama yönlendirmelerini bozar.İzole test kopyasında kuralları küçük gruplarla deniyorsanız her denemeden sonra aynı URL’yi ve günlüğü kontrol edin.
RewriteRule için RewriteEngine On, gerekli modül, desen, hedef ve bayrakların bağlamla uyumunu ayrı ayrı inceleyin.Rewrite kurallarında hedef URL veya dosya yolu tekrar aynı kurala giriyorsa sonsuz iç yönlendirme oluşabilir. Belirti, tek bir isteğin çok sayıda iç yönlendirmeden sonra 500 ile sonuçlanmasıdır. Bu durumda hedefin zaten işlenmiş olduğunu belirleyen bir koşul veya istisna eklenmeli; rastgele yeni yönlendirme satırları eklenmemelidir.
Düzeltme sonrası kontrol
- Hata veren URL’yi ve ana sayfayı ayrı ayrı test edin.
- HTTP ve HTTPS, www ve www olmayan varyantları kontrol edin.
- Bir statik dosyanın, örneğin
/robots.txtveya mevcut bir görselin, kurallardan etkilenip etkilenmediğine bakın. - Hata günlüğünde yeni bir kayıt oluşup oluşmadığını kontrol edin.
- Sorun çözülünce çalışan
.htaccessdosyasının yedeğini alın ve sonraki değişiklikleri tek tek uygulayın.
.htaccess içinde kullanılmasına izin verilip verilmediğini hosting sağlayıcısından doğrulayın. Sözdizimi doğru olsa bile yetki veya modül eksikliği 500 üretebilir.Sık sorulan sorular
.htaccess dosyasını silmek kalıcı çözüm müdür?
Hayır. Silmek yalnızca hatayı geçici olarak gizler ve yönlendirme, güvenlik veya uygulamanın URL kuralları kaybolabilir. Geri dönüş kopyasını erişime kapalı yerde saklayın ve güvenlik kurallarını koruyarak hatalı değişikliği düzeltin.
Hata günlüğüne erişemiyorsam ne yapmalıyım?
Hosting panelindeki hata kayıtlarını kontrol edin ve destek ekibine tam alan adı, hata zamanı, istek yolu ve değişiklik yaptığınız dosyayı iletin. Günlük olmadan kuralları rastgele değiştirmek, asıl hatayı gizleyebilir.
Apache yapılandırma testi başarılıysa .htaccess hatasız mıdır?
Hayır. Ana yapılandırmanın sözdizimi testi her istek yolundaki
.htaccess dosyasını topluca doğrulamaz; bu dosyalar istek sırasında okunur. Hata veren yolu gerçekten isteyip o isteğin günlüğünü incelemek gerekir.