Cara Redirect ke HTTPS Cloudflare dengan menggunakan PHP

Karena Cloudflare bukan hanya CDN tapi firewall juga, maka cara penanganan untuk di PHPnya juga berbeda
1008  
       

Cloudflare merupakan salah satu layanan yang menyatukan antara content delivery network (CDN), DNS Manajer, dan juga firewall sehingga bisa menawarkan keamanan dan kecepatan akses ke web kita dengan optimalisasi cache dan perlindungan dari trafik jahat (DDOS). Biasanya, ketika didalam PHP ini memanggil variabel server akan bertambah beberapa key baru yang mana key tersebut ditambahkan oleh Cloudflare.

Mengenal Key Server Cloudflare

Untuk mengetahui ada key apa saja yang ditambahkan oleh Cloudflare, cukup kita gunakan kode ini. Supaya cara ini berhasil, pastikan domain yang anda coba eksekusi sudah dilindungi oleh Cloudflare.

print_r($_SERVER);
die();

//sample outputnya adalah
[HTTP_X_REAL_IP] => 9.9.9.9
[HTTP_ACCEPT_ENCODING] => gzip
[HTTP_CONNECTION] => close
[HTTP_CF_IPCOUNTRY] => ID
[HTTP_CF_RAY] => 3be9f3316e-SIN
[HTTP_X_FORWARDED_PROTO] => http
[HTTP_CF_VISITOR] => {"scheme":"http"}

Dari hasil eksekusi kode ini, maka akan kita lihat beberapa key baru yaitu HTTP_X_REAL_IP, HTTP_ACCEPT_ENCODINGHTTP_CONNECTIONHTTP_CF_IPCOUNTRYHTTP_CF_RAYHTTP_X_FORWARDED_PROTO, dan HTTP_CF_VISITOR. Dari setiap key tersebut ada kegunaan dan fungsinya masing-masing.

HTTP_X_REAL_IP

HTTP_X_REAL_IP merupakan server variabel yang menyimpan IP Address sebenarnya, bukan IP address yang ada firewall atau IP Address Cloudflare. Bisa kita bandingkan dengan key REMOTE_ADDRESS ini berisikan IP dari si clouflare itu sendiri. Jadi, jika anda ingin mengetahui IP Address yang mengakses web anda cukup panggil HTTP_X_REAL_IP.

HTTP_X_FORWARDED_PROTO

HTTP_X_FORWARDED_PROTO merupakan salah satu key yang digunakan untuk mengetahui protokol dari skema HTTP yang digunakan. Ini juga menjadi perbedaan jika menggunakan Cloudflare ataupun tidak. Dengan menggunakan cloudflare, jika kita ingin me-redirect ke HTTPS maka gunakan HTTP_X_FORWARDED_PROTO jangan menggunakan key server HTTPS.

Key server lainnya

Untuk key server lainnya kita anggap sudah jelas ya.

Script Redirect ke HTTPS

Berikut ini contoh implementasi redirect ke HTTPS dengan menggunakan cloudflare.

$cf = 'https';
if(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) $cf = $_SERVER['HTTP_X_FORWARDED_PROTO'];
if($cf == 'http' ){
    	$redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    	header('HTTP/1.1 301 Moved Permanently');
    	header('Location: ' . $redirect);
    	exit();
}

Penjelasan Skrip

Untuk baris pertama ada variabel $cf dimana variabel ini berisikan nilai awal HTTPS. Jadi jika tidak menggunakan cloudflare maka tidak usah redirect. Kemudian untuk baris selanjutnya adalah memeriksa key server HTTP_X_FORWARDED_PROTO apakah sudah terdefisini atau belum. Jika telah terdefinisi, cukup isikan ke variabel $cf. Kemudian baris selanjutnya adalah untuk memeriksa apakah nilai $cf itu adalah HTTP atau HTTPS. Jika HTTP, maka redirect menjadi HTTPS dengan kode HTTP 301 atau permanent redirect. Setelah itu akan diakhiri dengan fungsi exit(); supaya tidak ada kode lain yang dieksekusi setelah memerintahkan redirect.

Demikian. Semoga Membantu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>