404 Dosya Bulunamadı

"404 Dosya bulunamadı" hatasının nedeni aslında çok açık görünüyor: "Dosya bulunamadı". Ancak işin aslı tam olarak öyle değil.

IIS, ve bazı başka web sunucular, güvenlik nedeniyle bir isteği blokladıklarında, yine güvenlik nedeniyle neden bloklandığını son kullanıcıya söylemezler. Bunun yerine "404 Dosya bulunamadı" hatası dönerler. Bazı senaryolarda IIS içeriğin gerçekte var olup olmadığına bile bakmadan bu hatayı döner.

Önce bu "bazı senaryolar"ın ne olduğundan biraz bahsedelim. IIS'e ait olan sürücü (driver) http.sys ve IIS 7.x ile gelen "Request Filtering" modülü, gelen her isteği işlenmeden önce bir takım güvenlik kontrollerinde geçirirler. Bu kontrollerden bazıları:

  • İstenilen dosyanın uzantısı
  • İstekte bulunulan metot (verb)
  • İstek verisinin ebatı
  • URL uzunluğu

Tüm bunlar için tanımlı değerlerin dışında bir istek geldiği takdirde istemciye 404 hatası dönülecektir. Ancak elbette bir site yöneticisinin bunları ayırt edebiliyor olması lazımdır. İşte bunu da IIS loglarında hata alt-kodları ile yapabiliyoruz:

  • 404.0 - Not found.
  • 404.1 - Site Not Found.
  • 404.2 - ISAPI or CGI restriction.
  • 404.3 - MIME type restriction.
  • 404.4 - No handler configured.
  • 404.5 - Denied by request filtering configuration.
  • 404.6 - Verb denied.
  • 404.7 - File extension denied.
  • 404.8 - Hidden namespace.
  • 404.9 - File attribute hidden.
  • 404.10 - Request header too long.
  • 404.11 - Request contains double escape sequence.
  • 404.12 - Request contains high-bit characters.
  • 404.13 - Content length too large.
  • 404.14 - Request URL too long.
  • 404.15 - Query string too long.
  • 404.16 - DAV request sent to the static file handler.
  • 404.17 - Dynamic content mapped to the static file handler via a wildcard MIME mapping.
  • 404.18 - Querystring sequence denied.
  • 404.19 - Denied by filtering rule.

IIS 7.x sunucuların tüm hata kodlarının listesine şuradan ulaşabilirsiniz.

CENK İŞCAN