Mengenal .htaccess (Bagian 1)

Mengenal .htaccess (Bagian 1)

Bagi developer website terutama yang menggunakan bahasa PHP atau server Apache, ilmu tentang .htaccess merupakan salah satu hal yang penting. Hanya dengan menguasai .htaccess…

Bagi developer website terutama yang menggunakan bahasa PHP atau server Apache, ilmu tentang .htaccess merupakan salah satu hal yang penting. Hanya dengan menguasai .htaccess ini saja, Anda bisa melakukan berbagai kustomisasi alur website sesuka Anda. Tentu saja tidak terlepas dari kemampuan Anda memanfaatkan kode PHP yang Anda gunakan.

Tentang .htaccess

File .htaccess (selanjutnya akan disebut htaccess saja) sendiri sebenarnya hanyalah sebuah file teks dalam format ASCII. Tujuan awalnya, dalam server Apache, file ini akan dibaca pertama kali sebelum request diproses ke file yang dikehendaki. Htaccess juga dapat digunakan untuk meng-override konfigurasi server untuk mengaktifkan ataupun menonaktifkan fitur-fitur dan berbagai fungsi lainnya.

Bahkan, htaccess akan dapat mengarahkan file mana yang akan diakses meskipun request-nya berbeda. Contoh sederhananya, htaccess dapat mengarahkan request ke file 404.html bila alamat yang di-request oleh user tidak tersedia. Htaccess juga dapat digunakan untuk memperkuat keamanan server web Anda.

Sebagai contoh, Anda dapat mengatur HTTP Password melalui htaccess ini, sehingga pengguna yang mengakses web Anda harus memasukkan username dan password. Anda juga dapat mengatur apakah suatu alamat website Anda hanya dapat diakses dari alamat IP (Internet Protocol) tertentu. Misalnya, untuk halaman admin hanya dapat diakses oleh komputer dengan IP lokal kantor Anda.

Lokasi htaccess

Htaccess dapat dengan mudah diletakkan dalam folder web Anda, dan bersifat rekursif. Artinya, bila Anda meletakkan htaccess di folder paling atas (root) web Anda, maka perintah yang ada di file tersebut akan berdampak ke semua sub-folder di dalamnya. Sedangkan bila Anda meletakkan htaccess di dalam sub-folder, maka perintah di dalamnya akan meng-override perintah yang ada di folder induknya.

Dengan demikian, sebagai contoh bila Anda ingin menonaktifkan mode akses list folder secara global, Anda bisa meletakkan file htaccess di root web. Kemudian bila Anda ingin memperbolehkan salah satu folder saja bisa memungkinkan diakses untuk mendapatkan daftar isinya, maka cukup meletakkan htaccess di dalamnya dengan perintah yang berbeda.

Penempatan htaccess mempengaruhi perintah dalam file mana yang akan digunakan server

Penempatan htaccess mempengaruhi perintah dalam file mana yang akan digunakan server

Semisal alamat website Anda adalah mimicreative.net, kemudian Anda meletakkan htaccess di root folder, maka tentu saja akan berdampak ke folder di dalamnya seperti mimicreative.net/about, mimicreative.net/about/contact, dan sebagainya. Sedangkan bila Anda meletakkan htaccess di dalam folder mimicreative.net/about/contact (yang paling dalam), maka bila pengguna mengaksesnya, server akan menggunakan perintah htaccess di folder itu, bukan yang ada di root web.

Perintah htaccess

Htaccess memiliki banyak perintah yang bisa digunakan. Dalam artikel ini akan dibahas sebagian perintah yang umum digunakan dalam konfigurasi website pada Apache Server. Untuk mencobanya, yang perlu Anda lakukan adalah menginstall Apache Server di komputer Anda. Untuk lebih mudahnya, Anda bisa menggunakan XAMPP yang bisa didownload di http://www.apachefriends.org/en/xampp.html sesuai sistem operasi yang Anda gunakan.

XAMPP dapat diinstal baik di sistem operasi Windows maupun Linux. Contoh dalam artikel ini menggunakan XAMPP pada sistem operasi Windows 7. Namun bila Anda menggunakan Linux, ataupun bila mengupload file web dengan htaccess ke web server, sebaiknya atur permission file menjadi 644.

Perlu Anda ketahui, htaccess merupakan file yang diawali dengan titik. Pada Linux, file dengan nama yang diawali titik dianggap sebagai hidden file, yang artinya secara default tidak akan ditampilkan. Sedangkan pada Windows, htaccess akan dianggap sebagai file biasa yang tidak disembunyikan. Karena itulah sebenarnya Apache server sebaiknya dijalankan pada Linux.

Setiap perintah dalam htaccess dipisahkan dalam baris yang berbeda. Karena itu berhati-hatilah bila Anda menggunakan text editor yang menyediakan fitur word-wrap, sebab memungkinkan terjadi kesalahan dalam pergantian baris kode. Untuk memberikan komentar, Anda harus mengawali setiap baris komentar dengan karakter sharp “#”.

Error Documents

Perintah pertama yang cukup bermanfaat adalah mengalihkan request bila terjadi error. Namun sebelum itu, Anda harus mengerti kode respon yang dihasilkan oleh server pada proses request. Anda bisa melihat daftar kode respon yang disediakan Apache Server pada tabel Response Code yang tersedia.

Anda tidak perlu mendefinisikan untuk seluruh response code, dan memang tidak seharusnya semua didefinisikan dalam htaccess. Sebagai contoh, perintah ErrorDocument untuk kode 200 justru akan menghasilkan infinite loop. Setidaknya, Anda mungkin perlu menuliskan perintah ErrorDocument untuk kode 404 dan 500.

Tampilan halaman 404 biasa

Tampilan halaman 404 biasa

Biasanya, tampilan error 404 hanya akan menampilkan pesan teks dengan latar belakang putih polos seperti pada gambar. Namun bila Anda ingin mengubahnya menjadi lebih menarik, Anda bisa mengarahkan response setiap terjadi error 404 ke suatu halaman html lain. Demikian juga bila terjadi error 500 atau kode lainnya.

Syntax kode htaccess yang bisa digunakan adalah sebagai berikut.

ErrorDocument 400 /mimi-errors/badrequest.html
ErrorDocument 401 /mimi-errors/authreq.html
ErrorDocument 403 /mimi-errors/forbidden.html
ErrorDocument 404 /mimi-errors/notfound.html
ErrorDocument 500 http://mimicreative.net/mimi-errors/server.html

Dengan membuat halaman error sendiri, tampilan web Anda ketika error pun masih tetap elegan, tidak polos seperti pada umumnya. Anda juga bisa mengarahkan ErrorDocument ke URL statis seperti pada baris terakhir di atas. Bahkan, Anda juga bisa menulis kode HTML pada file htaccess-nya seperti berikut.

ErrorDocument 401 "<body bgcolor=#ffffff>Anda harus terdaftar sebagai member untuk mengakses halaman ini</body>"

Perhatikan bahwa pesan diawali tanda petik (“), namun tidak perlu diakhiri dengan tanda petik pula. Selain itu, seluruh pesan harus tetap diletakkan dalam satu baris saja. Dengan cara demikian, Anda bisa membuat halaman error lebih menarik seperti gambar.

Salah satu contoh tampilan custom error

Salah satu contoh tampilan custom error

Memblok akses berdasarkan IP

Dengan htaccess, Anda dapat membuat pengaturan untuk blokir akses alamat web Anda berdasarkan IP pengunjung. Cara inilah yang digunakan website untuk mencegah pengunjung dari negara tertentu, ataupun meningkatkan keamanan bila terdeteksi banyak percobaan pembobolan dari suatu alamat IP tertentu.

Contoh syntax kode htaccess yang bisa digunakan adalah sebagai berikut.

Order allow, deny
Deny from 192.168.0.13
Deny from 222.123.
Deny from 1.2.1.2  4.3.4.3 127.0.0.1
Deny from .facebook.com
Allow from all

Pada contoh di atas, ada beberapa cara yang bisa Anda gunakan. Sebelum itu, Anda harus mengerti apa maksud dari baris pertama “Order allow, deny”. Baris tersebut mengatur urutan evaluasi hak akses. Kata “allow” di awal menyatakan bahwa daftar yang dilihat terlebih dahulu adalah alamat yang diperbolehkan, kemudian baru mengecek daftar alamat yang tidak diperbolehkan.

Ada beberapa cara untuk memblokir IP. Cara pertama ada pada baris kedua, yaitu menuliskan alamat IP secara lengkap. Cara kedua adalah dengan menuliskan bagian depan saja. Seperti pada baris ketiga, maka alamat “222.123.1.1” maupun alamat “222.123.14.23” akan diblokir. Anda juga bisa menuliskan beberapa alamat IP dalam satu baris, yang dipisahkan spasi ataupun tab. Selain itu, untuk memudahkan pula Anda bisa mencegah berdasarkan nama domain.

Secara default, server Apache menggunakan aturan “Order deny, allow”, yang berarti secara default seluruh request diperbolehkan, namun yang pertama dilihat dari daftar alamat adalah bagian pemblokiran. Sehingga, bila Anda menuliskan lagi kode di atas, bisa disederhanakan sebagai berikut.

Deny from 192.168.0.13
Deny from 222.123.
Deny from 1.2.1.2  4.3.4.3 127.0.0.1
Deny from .facebook.com

Memblok akses berdasarkan referral

Selain berdasarkan IP, Anda juga bisa memblok akses berdasarkan referral-nya. Yang dimaksud dengan referral adalah alamat sebelumnya yang membawa request ke alamat Anda, atau sederhananya dari alamat mana request itu berasal. Sebagai contoh, bila kita menuju alamat http://mimicreative.net dengan cara mengklik link yang ada di http://haqqi.net, maka alamat kedua itulah yang menjadi referralnya.

Biasanya teknik ini digunakan untuk mencegah situs lain menggunakan resource file di tempat Anda (semisal CSS atau gambar), sehingga traffic data server Anda membengkak meski bukan murni dari website Anda. Untuk mengaktifkan perintah ini, server Apache Anda harus mengaktifkan terlebih dahulu modul “mod_rewrite”. Pada XAMPP, secara default modul ini sudah aktif. Namun pada web server yang disewakan secara umum, Anda perlu mencari tahu terlebih dahulu.

Contoh penulisan perintah blokir berdasarkan referral adalah sebagai berikut.

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} mimicreative\.net [NC]
RewriteRule .* - [F]

Perintah di atas akan memblokir segala request yang referralnya adalah mimicreative.net. Perhatikan bahwa penggunaan titik diawali dengan backslash. Setelah itu, terdapat tulisan “[NC]” yang artinya Non-CaseSensitive yang menyebabkan server tidak menghiraukan perbedaan huruf kapital atau tidak.

Untuk memblokir langsung dari beberapa alamat, Anda bisa menggunakan kode berikut.

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} mimicreative\.net [NC,OR]
RewriteCond %{HTTP_REFERER} haqqi\.net
RewriteRule .* - [F]

Yang perlu Anda perhatikan bahwa di setiap baris aturan yang berisi alamat terblokir, selain baris terakhir harus diikuti dengan “[NC, OR]”. Selain itu, pada baris kedua Anda bisa melihat ada baris yang menggunakan komentar “#”. Hilangkan tanda komentar tersebut bila server Anda menghasilkan error 500 karena konfigurasi FollowSymLinks tidak diaktifkan.

Request yang diblok berdasarkan referral ini akan menampilkan pesan error 403. Anda bisa mengkustomisasi tampilan error tersebut bila telah mendefinisikan file yang mengatur ErrorDocument sebelumnya.

Penutup

Artikel ini adalah bagian pertama dari trik menggunakan htaccess yang dibuat oleh penulis. Pada artikel berikutnya, akan ada lagi beberapa trik memanfaatkan file htaccess untuk berbagai fungsi di server Apache Anda. Selamat mencoba!

Artikel milik penulis ini pernah dipublikasikan oleh PC Media di edisi 2012/01 lalu.
Tag: , , ,

2 Comments

Leave Comment
  1. buc says:

    Ta TO Ba! Ta To Ba!

  2. Zed Ibrahim says:

    Mas, dengan pengaturan di htaccess apa bisa untuk keperluan mempercepat loading web?

Write Comment

Your email will not be published. The marked label is required.