403 Forbidden Hatası Çözümü: İzinler, .htaccess ve Güvenlik Duvarı
403 Forbidden hatası, sunucunun istenen sayfayı ya da dosyayı bulduğu hâlde size göstermeyi reddettiğini bildiren HTTP durum kodudur. 404’ten farkı da budur: içerik yerinde durur, yalnızca erişim izni yoktur. Bu kararı veren çoğunlukla bir dosya izni, eksik bir index dosyası, bir .htaccess kuralı ya da bir güvenlik katmanıdır.
Aynı hata sayfası çok farklı nedenlerden doğduğu için doğru teşhis, ret kararını kimin verdiğini bulmaktır. Aşağıdaki adımlar LIONFIN web hosting hesaplarındaki cPanel ve Plesk araçlarıyla uygulanır; günlük satırlarını okumayı ve güvenlik duvarını kapatmadan sorunu çözmeyi de kapsar.
Kısa cevap
403 Forbidden hatası, sunucunun isteği anlayıp erişimi reddettiği durumlarda döner. En sık nedenleri yanlış dosya izinleri ya da sahiplik, index dosyası olmayan ve dizin listelemesi kapalı klasörler, .htaccess içindeki engelleme kuralları, IP engelleri, hotlink koruması ve ModSecurity gibi güvenlik duvarı kurallarıdır. Çözüm için hata günlüğündeki satırı okuyun, izinleri 755/644 yapın, index dosyasını ve erişim kurallarını kontrol edin.
403 Forbidden hatası nedir, 401 ve 404’ten farkı ne?
403 kodu, sunucunun isteği anladığını ama yerine getirmeyi reddettiğini söyler; sayfayı yenilemek ya da tarayıcı değiştirmek genellikle sonucu değiştirmez. Benzer kodlarla karşılaştırmak teşhisi hızlandırır:
| Kod | Anlamı | Tipik neden |
|---|---|---|
401 Unauthorized | Kimlik doğrulama gerekli | Parola korumalı klasör (cPanel Directory Privacy) |
403 Forbidden | Erişim reddedildi | İzinler, index dosyası, erişim kuralı, güvenlik duvarı |
404 Not Found | Kaynak bulunamadı | Yanlış adres, silinmiş dosya, kalıcı bağlantı sorunu |
Hatanın kapsamını not edin: tüm site mi, tek klasör mü, yalnızca görseller mi, yoksa yalnızca bir form gönderiminde mi? Sayfayı mobil veriden de açın. Yalnızca sizin bağlantınızda görünen 403 genellikle IP tabanlı bir engelin, belirli bir işlemde görünen 403 ise çoğunlukla bir güvenlik kuralının işaretidir.
403 Forbidden hatası neden olur?
403 hatası, isteğin geçtiği katmanlardan biri erişime izin vermediğinde oluşur; en sık rastlanan nedenler şunlardır:
- Dosya ve klasör izinleri: Web sunucusu dosyayı okuyamıyorsa (ör.
600izinli bir görsel) ya da klasöre giremiyorsa (çalıştırma biti olmayan644izinli bir klasör) erişim reddedilir. - Sahiplik: Başka bir kullanıcıya ait dosyalar, özellikle sunucu tarafında geri yüklenen yedeklerden sonra, okunamayabilir.
- Index dosyası yok: Klasörde
index.phpya daindex.htmlbulunmuyorsa ve dizin listeleme kapalıysa sunucu içeriği listelemek yerine 403 döner. Dosyaları yanlış klasöre yüklemek bu durumun en yaygın nedenidir. - .htaccess kuralları:
Require all denied,Deny from allya da sizin IP’nizi dışarıda bırakan birRequire ipsatırı. - IP engeli: cPanel IP Blocker listesine eklenmiş bir adres ya da aralık; geniş bir aralık engellendiyse kendi IP’niz de bu aralığa düşmüş olabilir.
- Hotlink koruması: İzin listesinde olmayan bir adresten çağrılan görseller.
- ModSecurity ve WAF kuralları: İstekteki bir içerik (form verisi, URL parametresi) saldırı kalıbına benzediğinde güvenlik duvarı isteği keser.
- CDN ve bulut WAF: Alan adı bir CDN arkasındaysa ret kararı sunucuya hiç ulaşmadan orada verilmiş olabilir.
WordPress güvenlik eklentileri de kendi engelleme sayfalarıyla 403 döndürebilir; eklentinin kayıtlarında IP’nizi arayın.
403 hatası nasıl çözülür? Adım adım kontrol
403 hatası, ret kararını veren katmanı günlükten bulup yalnızca o katmanı düzeltmekle çözülür; şu sırayla ilerleyin:
- Günlük satırını bulun. cPanel Metrics → Errors ya da Plesk Logs ekranında hatanın saatine bakın; satırdaki ifade nedeni çoğu zaman doğrudan söyler.
- Doğru klasörde olduğunuzu doğrulayın. Alan adının belge kökünde (
public_htmlya da ek alan adının kendi klasörü) bir index dosyası bulunmalı. - İzinleri düzeltin. Klasörleri
755, dosyaları644yapın.public_htmlklasörünün kendi iznini ise değiştirmeyin; cPanel’de genellikle750gelir ve bu değer doğrudur. .htaccessdosyasını test edin. Adını geçici olarak değiştirin; hata kaybolursa erişim kuralını dosyada arayın. Üst klasörlerdeki.htaccessdosyalarının alt klasörleri de etkilediğini unutmayın.- Engelleme listelerine bakın. Security → IP Blocker, Security → Hotlink Protection ve güvenlik eklentisinin engel listesi.
- Güvenlik duvarı kaydını toplayın. Günlükte
ModSecuritygeçiyorsa kural kimliğiyle destek talebi açın. - CDN’i ekarte edin. Yanıt başlıklarına bakarak hatayı hangi katmanın ürettiğini belirleyin.
Dosya izinlerini tek tek değiştirmek için cPanel dosya yöneticisi içindeki Permissions düğmesi yeterlidir.
İzin ve index dosyası kaynaklı 403 günlükte nasıl görünür?
İzin ve index sorunları Apache günlüğünde “search permissions are missing”, “Cannot serve directory” ya da “client denied by server configuration” ifadeleriyle görünür (satırlar kısaltıldı):
AH00035: access to /galeri/foto.jpg denied (filesystem path '/home/kullanici/public_html/galeri') because search permissions are missing on a component of the path
AH01276: Cannot serve directory /home/kullanici/public_html/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive
client denied by server configuration: /home/kullanici/public_html/yonetim/İlk satır, yoldaki bir klasörün girme (çalıştırma) izni olmadığını söyler: klasörü 755 yapın. Dosyanın kendisi okunamıyorsa satırda file permissions deny server access ifadesi görünür; dosyayı 644 yapın. İkinci satırda klasörde index dosyası yoktur; dosyaları doğru klasöre taşıyın ya da bir index dosyası ekleyin. Dizin listelemeyi açmak teknik olarak çözüm olsa da klasördeki tüm dosya adlarını herkese gösterdiği için önerilmez. Üçüncü satır, bir erişim kuralının (.htaccess ya da sunucu yapılandırması) isteği reddettiğini gösterir. LiteSpeed kullanan sunucularda ifadeler farklı olabilir; anlam aynıdır.
.htaccess, IP Blocker ve hotlink koruması kurallarını kontrol etme
Erişim kuralları bilerek ya da bir eklenti tarafından eklenmiş olabilir; dosyada şu kalıpları arayın:
# Apache 2.4 biçimi
Require all denied
Require ip 203.0.113.0/24
# Eski (Apache 2.2) biçim
Order deny,allow
Deny from allBir klasörü yalnızca belirli IP’lere açan Require ip satırı, IP adresiniz değiştiğinde sizi de dışarıda bırakır; güncel adresinizi ekleyin. cPanel hosting hesaplarında IP Blocker aracının eklediği engeller de .htaccess dosyasına yazılır; kaldırmak için aynı ekrandaki listeyi kullanın. Hotlink Protection açıksa sitenizin www’lu ve www’suz adresleri ile CDN alan adınız da izin listesinde olmalıdır; aksi hâlde kendi görselleriniz 403 verir. Kuralların yazımı ve güvenli düzenleme için .htaccess kullanımı rehberine bakın.
Sunucu güvenlik duvarı IP’nizi art arda hatalı giriş denemeleri nedeniyle engellediyse genellikle 403 değil, bağlantı zaman aşımı görürsünüz; bu durumda IP adresinizle destek talebi açın.
ModSecurity kaynaklı 403 nasıl anlaşılır ve çözülür?
ModSecurity, web sunucusuna gelen istekleri saldırı kalıplarına göre denetleyen bir web uygulaması güvenlik duvarıdır (WAF, Web Application Firewall); bir kural tetiklendiğinde isteği 403 ile keser. Tipik belirti, sitenin genelde çalışırken yalnızca belirli bir işlemde (yazı kaydetme, form gönderme, ürün içe aktarma) hata vermesidir. Günlükte şu biçimde bir satır görünür:
ModSecurity: Access denied with code 403 (phase 2). ... [id "949110"] [msg "Inbound Anomaly Score Exceeded"] [hostname "siteniz.com"] [uri "/wp-admin/post.php"] [unique_id "..."]id tetiklenen kuralın kimliğini, uri engellenen adresi, unique_id ise isteğin sunucu kaydındaki karşılığını verir; kimlik numaraları kullanılan kural setine göre değişir. Bu üç değeri ve hatanın saatini destek talebine ekleyin; ekip kuralı yalnızca o adres için beyaz listeye alabilir. Satırı panelde göremiyorsanız saat ve adres bilgisi yeterlidir, ekip sunucu kayıtlarında bulur. cPanel’deki Security → ModSecurity ekranı güvenlik duvarını alan adı bazında tamamen kapatmanıza izin verebilir; ancak bu, tek bir yanlış alarm yüzünden tüm saldırı korumasını kaldırmak demektir. Plesk’te kural bazlı ayarlar Plesk güvenlik ayarları rehberinde anlatılır.
Site bir CDN ya da WAF arkasındaysa 403 nereden gelir?
Alan adınız Cloudflare benzeri bir CDN ya da bulut güvenlik duvarı üzerinden yayınlanıyorsa 403 sayfası sunucunuzdan değil, o hizmetten geliyor olabilir. Yanıt başlıklarını kontrol edin:
curl -sI https://siteniz.com/sorunlu-sayfa | grep -iE "^(HTTP|server|cf-ray|x-cache)"server satırında CDN’in adı görünüyorsa ve sunucu günlüğünde aynı saate ait kayıt yoksa ret kararı CDN katmanında verilmiştir; o hizmetin güvenlik olayları ekranında engellenen isteği bulun. Satırda Apache ya da LiteSpeed görünüyorsa sorun hostingdedir ve önceki bölümlerdeki kontroller geçerlidir. CDN’in nasıl çalıştığı CDN nedir yazısında anlatılır; kalıcı güvenlik önlemleri için web sitesi güvenliği kontrol listesi iyi bir başlangıçtır.
Sık Sorulan Sorular
403 Forbidden hatası yalnızca bende çıkıyorsa ne yapmalıyım?
Sayfayı mobil veriden ya da başka bir ağdan açın. Diğer ağlarda çalışıyorsa IP adresiniz bir .htaccess kuralı, IP Blocker listesi, güvenlik eklentisi ya da CDN tarafından engellenmiş olabilir. Güncel IP adresinizi öğrenip bu listelerde arayın; bulamazsanız IP adresinizi ve hatanın saatini belirterek destek talebi açın.
WordPress yönetici panelinde kaydederken neden 403 alıyorum?
Yazı ya da sayfa içeriğindeki bir kod parçası, iframe veya özel karakter dizisi ModSecurity kuralını tetiklemiş olabilir; hatanın yalnızca belirli bir içerikte çıkması güçlü bir işarettir. Günlükteki kural kimliğini ve isteğin adresini destek ekibine iletin; kural o adres için istisnaya alınır, güvenlik duvarını kapatmanıza gerek kalmaz.
Klasöre index dosyası koymadan dosyaları listelemek güvenli mi?
Genellikle değildir. Dizin listeleme açıkken klasördeki yedek arşivleri, yapılandırma kopyaları ve dışarıya açılmaması gereken dosyalar herkesin görebileceği bir listeye dönüşür. İndirme sayfası gibi gerçekten liste gereken bir klasörde bile yalnızca o klasör için Options +Indexes kullanın, sitenin geneli için kapalı tutun.
Görsellerim başka sitelerde 403 veriyor, neden?
Hotlink koruması açıksa görselleriniz yalnızca izin verdiğiniz alan adlarından çağrıldığında gösterilir; başka sitelere gömülen görseller bilinçli olarak 403 alır. Kendi sitenizde de görseller kırılıyorsa CDN alan adınız ya da yeni bir alt alan adı izin listesinde eksiktir. cPanel Hotlink Protection ekranından listeyi güncelleyin.
İzinleri düzelttim ama 403 devam ediyor, neden?
Tarayıcı ya da CDN eski yanıtı önbellekte tutuyor olabilir; gizli pencerede deneyin. İzin doğruysa sorun yoldaki bir üst klasörde, dosya sahipliğinde ya da bir erişim kuralındadır. Hata günlüğündeki satır hangi katmanın reddettiğini gösterir; sahiplik sorunlarını yalnızca destek ekibi düzeltebilir.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu