HTTPQUERY
Bahasa Indonesia

500 Internal Server Error

Penggunaan

Kode status 500 Internal Server Error menandakan kegagalan umum di sisi server. Karena sifat error ini sangat luas, penyebab spesifiknya bergantung pada lingkungan yang digunakan. Server web sedang mengalami masalah dan administrator server perlu mengambil tindakan untuk mengatasinya.

Error ini sering kali disebabkan oleh masalah izin pada satu atau beberapa berkas, timeout skrip, atau kerusakan pada berkas .htaccess. Satu-satunya hal yang pasti adalah request HTTP tersebut tidak terpenuhi.

Catatan

Sebagai pengguna akhir, error 500 bukanlah kesalahan klien. Satu-satunya tindakan yang bisa dilakukan adalah menunggu dan mencoba lagi nanti, atau menghubungi administrator situs. Sebagian besar error 500 bersifat sementara, disebabkan oleh kondisi sesaat seperti kehabisan sumber daya atau masalah saat deployment.

Catatan

Respons 500 yang membocorkan stack trace, kueri basis data, path berkas, atau versi framework akan mengungkap informasi yang berguna bagi penyerang. Server produksi harus mengembalikan halaman error yang generik dan mencatat detailnya hanya di sisi server.

Dampak SEO

Googlebot memperlakukan error 5xx sebagai sinyal untuk sementara menurunkan laju perayapan di seluruh situs. URL yang sebelumnya terindeks awalnya tetap dipertahankan, tetapi downtime yang berkepanjangan membuat Google mengeluarkannya dari indeks. Konten apa pun yang dikembalikan bersama respons 500 akan diabaikan. Dalam hal ini Google memperlakukan 500, 502, dan 503 secara identik. Error 5xx pada berkas robots.txt jauh lebih parah, bahkan ketika setiap halaman lain di situs tersebut mengembalikan 200. Google menghentikan perayapan hingga 12 jam, lalu kembali menggunakan salinan ter-cache hingga 30 hari. Jika error tersebut terus berlanjut, Google akan menghapus seluruh situs dari indeks. Bingbot juga memperlakukan respons 5xx sebagai kegagalan perayapan. Error 5xx yang persisten mencegah pengindeksan di Bing.

Contoh

Klien meminta sebuah sumber daya dan server merespons dengan kode status 500 Internal Server Error, yang menunjukkan bahwa request tersebut tidak akan dipenuhi.

Permintaan

GET /news.html HTTP/1.1
Host: example.com

Respons

HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=UTF-8
Content-Length: 139

<html>
  <head>
    <title>Request Failed</title>
  </head>
  <body>
    <p>The request failed due to a server error.</p>
  </body>
</html>

Cara memperbaiki

Mulailah dari log error. Di nginx, periksa /var/log/nginx/error.log. Di Apache, periksa /var/log/apache2/error.log atau /var/log/httpd/error_log. Entri log hampir selalu menyebutkan berkas dan nomor baris yang bermasalah.

Penyebab utama yang umum beserta perbaikannya:

Setelah penyebabnya teridentifikasi, terapkan perbaikan dan pantau log error untuk melihat apakah masalahnya berulang. Siapkan peringatan berbasis log agar lonjakan error 500 tertangkap sebelum dilaporkan oleh pengguna.

Referensi kode

.NET

HttpStatusCode.InternalServerError

Rust

http::StatusCode::INTERNAL_SERVER_ERROR

Rails

:internal_server_error

Go

http.StatusInternalServerError

Symfony

Response::HTTP_INTERNAL_SERVER_ERROR

Python3.5+

http.HTTPStatus.INTERNAL_SERVER_ERROR

Java

java.net.HttpURLConnection.HTTP_INTERNAL_ERROR

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_SERVER_ERROR
org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR

Angular

@angular/common/http/HttpStatusCode.InternalServerError