Menggunakan File htaccess untuk Clean URL dengan PHP

Malang – Beberapa hari ini aku mencoba belajar clean URL, karena penasaran saja, padahal di blog ini sudah lama aku menggunakan clean URL, tapi belum penasaran karena sudah tersedia di menu setting wordpress. Sampai akhirnya keinginan itu muncuk untuk mencoba clean URL, tentunya belajarnya jangan langsung diupload di hosting di-lokalhost dulu, kemudian persiapannya apa saja?

Apa itu clean URL?

Secara sederhana dan gampangnya clean url merupakan suatu metode penamaan halaman web dengan cara lebih sederhana, struktural, logis dan terbaca oleh manusia. Dengan struktur penamaan halaman yang baik maka pembaca atau pengguna lebih mudah mengingat apa yang mereka buka. Clean url juga sering dikenal dengan user-friendly URLs atau SEO-friendly URLs yang artinya penamaan yang digunakan sangat mendukung untuk optimalisasi mesin pencari .

Situs atau web yang clean URL

Sering kita menjumpai ketika sering browsing jika dilihat di address bar akan terlihat seperti ini.

http://www.domain.com/?id=89
http://www.domain.com/index.php?id=890
http://www.domain.com/artikel.php?id=891

Ini adalah sebuah contoh not clean url, kenapa begitu karena ada ?id=89, index.php?id=890 atau artikel.php?id=891, menurut beberapa tool SEO online hal ini tidak disukai oleh search engine seperti google, yahoo, bing dll.

Lantas seperti apa situs clean URL itu? bisa dilihat pada salah satu artikel diblog ini sebagai contoh :

https://www.esn.or.id/2019/04/21/konfigurasi-mikrotik-agar-access-point-dapat-diakses-dari-internet.html

Ini adalah sah satu contoh clean URL, settingan ini dengan mudah dilakukan jika kita menggunakan CMS pada umumnya, seperti yang aku sembutkan tadi.

Lantas bagaimana jika ingin membuat sendiri?

langkah pertama adalah menentukan clean URL seperti apa yang diinginkan, sebagai contoh saya ingin membuat clean URL sebagai berikut:

https://www.domain.com/database/
https://www.domain.com/database/aceh/
https://www.domain.com/database/jambi/45/
https://www.domain.com/database/jambi/sarolangun/45/
https://www.domain.com/blog/cara-masak-nasi-padang-tanpa-capek
https://www.domain.com/warung-padang-wijaya/

Untuk membuat clean URL seperti diatas kita membutuhkan file .htaccess yang diupload pada hosting kita.

Apa itu .httpaccess?

File .htaccess merupakan file text sederhana dalam format ASCII yang bertujuan untuk merubah beberapa konfigurasi untuk mengarahkan pada web server Apache. File .htaccess dapat ditaruh dimapun pada folder website Anda. Ada beberapa hal yang dapat dilakukan dengan .htaccess, diantara yaitu:

  • Mencegah pengunjung melakukan browsing direktori
  • Me-redirect pengunjung dari satu halaman ke halaman lain
  • Memberi proteksi password pada direktori
  • Mengubah default halaman index pada folder tertentu
  • Mencegah hot-linking of images dari website

Sekarang sudah bapah bukan apa itu clean URL, not clean URL, dan .htaccess. Kalau PHP saya tidak menjelaskan disini. Ok langkah selanjutnya adalah membuat file .htaccess itu. Untuk membuat clean URL seperti yang saya tuliskan diatas file .htaccess-nya kira-kira seperti berikut:

RewriteEngine on
RewriteRule ^([a-zA-z0-9-]+)/([a-zA-z0-9-]+)/([0-9]+)/$ index.php?url=$1&page=$2 [NC,L]
RewriteRule ^([a-zA-z0-9-]+)/([a-zA-z0-9-]+)/([a-zA-z0-9-/]+)/([0-9]+)/$ index.php?url=$1&page=$2 [NC,L]
RewriteRule ^([a-zA-z0-9-]+)/([a-zA-z0-9-]+)/$ index.php?url=$1&page=$2 [NC,L]
RewriteRule ^([-\w]+)/(\d+)$ index.php?url=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)\/?$ index.php?dt=$1 [NC]
RewriteRule ^([a-zA-Z0-9-]+)\/([a-zA-Z0-9-]+)\/?$ index.php?database=$1&dt=$2 [NC]

Ada pengalaman saya bahwa file .htaccess kadang dapat berjalan di localhost, tapi belum tentu bisa berjalan ketika sudah diupload di server. Oleh karena itu harus mencoba terlebih dahulu di server.

Dengan file .htaccess seperti diatas file index.php seperti apa? kira-kira sederhanyanya seperti ini.

<?php
$long_url = 'https://'.$_SERVER['SERVER_NAME'].'/<br>';
echo $_SERVER["REQUEST_URI"].'<br>';
echo $long_url.'<hr>';
?>
<A HREF="/">Home</A> |
<A HREF="/database/">Database</A> |
<A HREF="/database/aceh/">aceh</A> |
<A HREF="/database/riau/3/">riau</A> |
<A HREF="/blog/cara-masak-nasi-padang-tanpa-capek/">Cara Masak Nasi Padang</A> |
<A HREF="/warung-padang-wijaya/">Warung Padang Wijaya</A> |
<A HREF="/database/jambi/45/">Jambi</A> |
<A HREF="/database/jambi/sarolangun/45/">Sarolangun</A>

Saya sudah mencoba di server ini dapat berjalan dengan baik. Semoga dapat membantu yang sedang belajar clean URL dengan .htaccess dengan PHP.