Redirect 403 to 404, membuat halaman error

Yang dimaksud dengan 403 dan 404 adalah kode response http yang kita terima saat request atau membuka halaman web

Ada banyak kode response http, tapi disini kita bahas kode 403 dan 404

Kode 403 berarti request atau akses kita forbidden, tidak di ijinkan. Misalnya kita ingin mengakses suatu halaman yang menyimpan beberapa foto, yaitu https://mysites.com/images/, halaman tersebut memang ada di server mysites, akan tetapi kita tidak diperbolehkan mengaksesnya, oleh karena itu kita mendapat response kode 403, forbidden, pada browser kita

Sedangkan kode 404 berarti, request atau halaman tidak ada dalam server. Misalnya kita mengakses https://mysites.com/awewewaeawvd1/ dimana tentu saja halaman itu tidak ada dalam server mysites

Jadi perbedaannya kalo 403 berarti halaman itu memang ada sedangkan 404 artinya halaman tidak ada

Nah, sebagai pemilik server tentu kita ingin memproteksi halaman web kita, salah satunya adalah mengelabui halaman yang forbidden menjadi halaman tidak ditemukan, agar user mengira bahwa halaman tersebut tidak ada

Hal itu bisa dilakukan dengan beberapa cara, salah satunya dengan menggunakan .htaccess

Caranya : 

  1. Membuat halaman tampilan error yang diletakkan pada directory public, misalnya 404.php pada directory errordoc (jangan membuat halaman berbentuk html, akan tetapi berbentuk php). Berikut contoh file 404.php 
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>

2. Setting pada file .htaccess untuk menampilkan file 404.php saat response 403 dan 404

Untuk itu buka file .htaccess dalam folder public anda, jika tidak ada, buatlah file baru dalam folder public anda dengan nama .htaccess

Lalu isikan perintah berikut

 

Options -Indexes
ErrorDocument 403 /errordoc/404.php
ErrorDocument 404 /errordoc/404.php

Ketika kedua langkah tersebut selesai kita lakukan, kita bisa mencobanya dengan mengakses halaman yang forbidden, misalnya https://serveranda.com/images atau https://serveranda.com/admin

Saat anda mengakses halaman tersebut, maka yang tampil adalah halaman 404.php yang kita buat dalam folder errordoc tadi. Tampilan yang sama akan muncul saat kita mengakses halaman yang tidak ada dalam server kita, karena kita juga redirecting 404 ke 404.php dalam .htaccess

Memang 404.php akan ditampilkan saat response kode 403, akan tetapi jika kita lihat status request dan response (lewat developer tools google chrome) akan terlihat response code masih 403

Untuk membuatnya menjadi code 404, kita perlu mengedit file 404.php tadi dengan perintah php, seperti berikut

 

<?php http_response_code(404);?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>

Nah sekarang apabila kita mengakses halaman yang forbidden, maka yang kita dapat adalah halaman not found dan response  not found juga yaitu 404

Anda dapat redirect juga beberapa kode response yang lainnya dengan cara yang sama

Semoga bermanfaat