Siteyi, yönetim panelini (wp-admin) ya da belirli bir işlemi açmaya çalıştığınızda “403 Forbidden”, “Erişim engellendi” veya “You don’t have permission to access this resource” uyarısı çıkıyor. Bu işlem bir yazıyı kaydetmek, bir görsel yüklemek ya da bir eklenti ayarını değiştirmek olabilir. Site dün çalışıyordu; aradaki tek fark bir eklenti güncellemesi, bir taşıma ya da barındırma tarafında yapılan bir değişiklik olabilir.
Kısa yanıt#
403, sunucunun isteği anladığı ama izin vermediği anlamına gelir. Engelin kaynağı genellikle dört yerden biridir: güvenlik eklentisi, bozuk ya da fazladan kural içeren .htaccess dosyası, yanlış dosya/klasör izinleri ya da barındırma firmasının güvenlik duvarı (WAF, ModSecurity) veya CDN. Önce hatanın nerede çıktığını belirleyin. Sonra yedek alıp bu dört kaynağı sırayla, her seferinde tek bir değişiklik yaparak test edin. İzinleri hiçbir zaman “777” yapmayın.
403 ne demek?#
404 “sayfa bulunamadı”, 500 “sunucu tarafında bir hata oluştu” demektir; 403 ise “sayfa var ama sana göstermiyorum” demektir. Bu yüzden 403’te sorun genellikle WordPress’in PHP kodunda değil, sunucunun ya da bir güvenlik katmanının erişim kurallarındadır. Ekranda gördüğünüz sayfanın tasarımı bir ipucu verir: barındırma firmanızın ya da CDN’in logosunu taşıyan bir hata sayfası, engelin WordPress’e ulaşmadan önce konduğunu gösterir.
Başlamadan önce: yedek ve kapsam#
- Barındırma panelinden dosyaların ve veritabanının güncel bir yedeğini alın. Değiştireceğiniz her dosyanın (özellikle
.htaccess) bir kopyasını bilgisayarınıza indirin. - Hatanın kapsamını not edin: Bütün sitede mi, yalnızca wp-admin’de mi, yoksa belirli bir işlemde mi (kaydetme, yükleme) çıkıyor? Yalnızca sizde mi, başka bir ağdan (ör. telefonun mobil verisi) da mı çıkıyor?
- Son yaptığınız değişikliği hatırlayın: eklenti kurulumu/güncellemesi, alan adı ya da HTTPS değişikliği, sunucu taşıma, CDN kurulumu.
Teşhis sırası#
1. Güvenlik eklentisi
Güvenlik eklentileri, şüpheli buldukları istekleri ve IP adreslerini 403 ile engelleyebilir. Yalnızca belirli bir işlem engelleniyorsa (ör. bir yazıda kod örneği kaydetmek) eklentinin güvenlik duvarı kuralı devreye girmiş olabilir.
- Yönetim paneline girebiliyorsanız güvenlik eklentisinin engelleme günlüğüne bakın ve kendi IP adresinizin engellenip engellenmediğini kontrol edin.
- Panele giremiyorsanız FTP veya barındırma panelinin dosya yöneticisiyle
wp-content/plugins/içindeki güvenlik eklentisi klasörünün adını geçici olarak değiştirin (ör. sonuna-kapaliekleyin). Böylece WordPress eklentiyi devre dışı bırakır. - Hata kaybolursa klasör adını geri alın ve sorunu eklentinin ayarlarından ya da destek forumundan çözün. Güvenlik eklentisini kalıcı olarak kapalı bırakmayın.
2. .htaccess dosyası (Apache/LiteSpeed sunucular)
.htaccess, WordPress kök klasöründe bulunan gizli bir dosyadır. Kalıcı bağlantıların yanı sıra eklentilerin eklediği erişim kurallarını da içerir. Hatalı ya da çakışan bir kural bütün siteyi 403’e düşürebilir.
- FTP istemcinizde gizli dosyaları gösterme seçeneğini açın.
- Mevcut
.htaccess‘in bir kopyasını bilgisayarınıza indirin, sonra sunucudaki dosyanın adını.htaccess-yedekolarak değiştirin. - Siteyi deneyin. Hata kaybolduysa sorun bu dosyadaki bir kuraldadır. Yönetim panelinde Ayarlar > Kalıcı Bağlantılar ekranını açıp hiçbir şeyi değiştirmeden Değişiklikleri Kaydet‘e basın; WordPress temel kuralları yeniden yazmaya çalışır.
- Önbellek veya güvenlik eklentilerinin eklediği kuralları yedek dosyadan tek tek geri taşıyarak hangisinin soruna yol açtığını bulun.
Nginx kullanan sunucularda .htaccess okunmaz; bu durumda kurallar sunucu yapılandırmasındadır ve barındırma firmanızın desteği gerekir.
3. Dosya ve klasör izinleri
Taşıma veya yanlış bir FTP işleminden sonra izinler bozulabilir. Web sunucusu dosyayı okuyamazsa 403 döner. WordPress’in resmî belgelerine göre genel öneri şöyle:
- Klasörler: 755 (bazı suexec kurulumlarında 750)
- Dosyalar: 644 (bazı suexec kurulumlarında 640)
wp-config.php: diğer sunucu kullanıcılarının okuyamaması için 440 veya 400 gibi daha sıkı bir değer
İzinleri FTP istemcisinde dosyaya sağ tıklayıp “Dosya izinleri” seçeneğiyle ya da barındırma panelinin dosya yöneticisiyle değiştirebilirsiniz. Birçok barındırma panelinde “izinleri düzelt” aracı da bulunur. 777 kullanmayın: WordPress belgeleri bu iznin sunucudaki herhangi bir kullanıcıya veya işleme dosyaları yazma yetkisi verdiğini ve siteyi ele geçirilmeye açık hâle getirdiğini vurguluyor. Ayrıca toplu (recursive) izin değiştirmeden önce mutlaka yedek alın; yanlış bir değer siteyi tamamen kapatabilir.
4. Eksik index dosyası
Yalnızca ana sayfada ya da bir klasör adresinde 403 alıyorsanız kök klasörde index.php eksik olabilir. Sunucular dizin listelemeyi güvenlik nedeniyle kapattığı için index dosyası olmayan bir klasörü 403 ile gösterir. Bu durum genellikle yarım kalmış bir taşıma ya da yanlış klasöre yapılan bir yüklemeden sonra görülür. Dosyayı WordPress’in kendi sürümünüzle aynı paketinden geri yükleyin.
5. Sunucu güvenlik duvarı ve CDN
- Barındırma firmaları ModSecurity gibi web uygulama güvenlik duvarları kullanır. Yalnızca belirli içerikleri kaydederken 403 alıyorsanız (ör. içinde
<script>veya SQL benzeri ifade geçen bir yazı) büyük olasılıkla bu katman devreye girmiştir. Hatanın tarihini, saatini ve adresini barındırma desteğine iletip ilgili kuralın kaydını isteyin. - Cloudflare benzeri bir CDN kullanıyorsanız CDN panelindeki güvenlik olaylarına bakın. Kendi IP adresinizin, ülkenizin ya da tarayıcınızın engellenmiş olabileceğini unutmayın.
- Çok sayıda hatalı giriş denemesinden sonra bazı sunucular IP adresinizi geçici olarak engeller. Mobil veri üzerinden siteye girebiliyorsanız bu olasılık güçlenir.
Günlükleri okuma#
403 çoğunlukla PHP hatası olmadığı için WordPress’in debug.log dosyasında görünmeyebilir. Önce barındırma panelindeki sunucu hata günlüğüne (error log) bakın; çoğu zaman engellenen dosya ve sebep (“permission denied”, “ModSecurity”, “client denied by server configuration”) orada yazar. WordPress tarafında hata ayıklama gerekiyorsa wp-config.php‘de WP_DEBUG ve WP_DEBUG_LOG açılabilir; günlük varsayılan olarak wp-content/debug.log dosyasına yazılır. WordPress belgeleri hata ayıklamanın canlı sitelerde değil, test kopyalarında kullanılmasını öneriyor. Canlı sitede kısa süreliğine açtıysanız WP_DEBUG_DISPLAY‘i kapalı tutun ve işiniz bitince ayarları geri alın.
Sürüm ve sunucu kapsamı#
Adımlar WordPress’in güncel sürümleri için geçerlidir; Apache veya LiteSpeed kullanan paylaşımlı barındırmalar esas alınmıştır. Nginx sunucularda .htaccess adımı uygulanmaz. Yönetilen (managed) WordPress barındırmalarında dosya izinlerine ve sunucu kurallarına erişiminiz sınırlı olabilir; bu durumda barındırma desteği ilk adres olmalıdır. Panel ve menü adları barındırma firmasına göre değişir.
Hâlâ 403 alıyorsanız#
- Önbellek eklentisini ve sunucu önbelleğini temizleyip tarayıcının gizli penceresinde yeniden deneyin. Eski bir 403 yanıtı önbellekte kalmış olabilir.
- Barındırma desteğine hatanın tam adresini, saatini, IP adresinizi ve yaptığınız adımları iletin.
- Hata 403 değil de “kritik hata” ya da beyaz ekransa sitedeki WordPress “Bu web sitesinde kritik bir hata oluştu” rehberine bakın. Ana sayfa açılıp yazılar 404 veriyorsa kalıcı bağlantı teşhisi rehberi daha uygundur.
- Sorun düzeldikten sonra yönetici hesabınızı korumak için WordPress yönetici hesabı güvenliği rehberini gözden geçirin. Güvenlik eklentisini kapattıysanız tekrar açmayı unutmayın.
Sık sorulan sorular#
Yalnızca yazıyı kaydederken 403 alıyorum, site normal çalışıyor. Neden?
Bu, büyük olasılıkla sunucunun veya güvenlik eklentisinin güvenlik duvarının, yazının içeriğindeki bir ifadeyi saldırı sanmasıdır. İçerikteki kod parçalarını geçici olarak çıkarıp kaydetmeyi deneyin ve durumu barındırma desteğine bildirin.
.htaccess dosyasını silmek siteye zarar verir mi?
Silmek yerine adını değiştirin ve bir kopyasını saklayın. Dosya olmadan kalıcı bağlantılar ve eklentilerin eklediği yönlendirme veya önbellek kuralları çalışmaz. Kalıcı Bağlantılar ekranında kaydetmek temel kuralları geri getirir; eklenti kurallarını ise yedekten geri taşımanız gerekebilir.
İzinleri 777 yapınca hata düzeldi, öyle bırakabilir miyim?
Hayır. 777, sunucudaki herkese yazma yetkisi verir ve siteyi ciddi bir güvenlik riskine açar. Klasörleri 755, dosyaları 644 yapın ve sorun sürüyorsa asıl nedeni barındırma desteğiyle birlikte bulun.
