Wednesday , 24 January 2018
Cara Menulis Artikel Google Friendly 728x90

Mengenal .htaccess dan Fungsinya (2)

htaccess dan fungsinya

Ini adalah artikel lanjutan dari bagian 1 yang menjelaskan tentang apa itu .htaccess, bagaimana menempatkan file .htaccess dan mengenai perintah .htaccess

Error Documents

Perintah pertama yang cukup bermanfaat adalah mengalihkan halaman ketika terjadi error. Namun sebelum itu anda harus tahu kode respon yang dihasilkan oleh server untuk suatu request/permintaan. Anda bisa lihat daftar kode respon yang dihasilkan oleh server pada tabel yang nanti saya tunjukkan di bawah.

Anda tidak perlu mendefinisikan untuk seluruh respon code, dan memang tidak seharusnya semua didefinisikan dalam .htaccess. Contohnya perintah ErrorDocument untuk kode 200 justru akan menghasilkan infinite loop. setidaknya anda mungkin perlu menuliskan perintah ErrorDocument untuk kode 404 atau 500.

Error Document

Jika menghasilkan error 404, biasanya akan menampilkan tampilan polos seperti pada gambar. Namun bila anda menginginkan tampilan yang lebih menarik, anda bisa mengarahkan setiap terjadi error 404 ke halaman lain. Hal ini juga bisa dilakukan bila terjadi error 500 atau kode yang lain.

Syntax kode .htaccess yang bisa digunakan adalah sebagai berikut

ErrorDocument 400 /ibagusm-errors/badrequest.html
ErrorDocument 401 /ibagusm-errors/authreq.html
ErrorDocument 403 /ibagusm-errors/forbidden.html
ErrorDocument 404 /ibagusm-errors/notfound.html
ErrorDocument 500 http://ibagusm.web.id/ibagusm-errors/server.html

Dengan membuat halaman error sendiri, tampilan yang dihasilkannya pun akan tetap elegan dan menawan, berbeda ketika halamn yang dihasilkan secara bawaan, polos dan terlihat tidak menarik. Anda juga bisa mengarahkan ErrorDocument ke URL statis seperti pada baris terakhis di atas. Bahkan, anda bisa menuliskan kode HTML pada file .htaccess nya seperti berikut

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

Yang perlu diingat adalah bahwa seluruh pesan harus diletakkan dalam satu baris saja. Dengan cara demikian anda akan mendapatkan tampilan menarik yang sesuai dengan keinginan anda.

error 404

Gambar di atas adalah contoh tampilan error 404 yang telah dikostum.

Memblok Akses Berdasarkan IP

Dengan .htaccess, anda dapat membuat pengaturan untuk blokir akses alamat website anda berdasarkan IP pengunjung. Cara ini adalah salah satu cara untuk blokir akses website anda dari negara tertentu, ataupun meningkatkan keamanan bila terdeteksi percobaan penyerangan dari IP tertentu.

Contoh syntag kode yang bisa digunakan, sebagai berikut:

Order allow, deny
Deny from 192.168.11.12
Deny from 123.123.
Deny from 1.2.1.2  4.3.4.3 127.0.0.1
Deny from .facebook.com
Allow from all

Melihat contoh diatas, ada beberapa cara untuk melakukan pemblokiran. Tapi sebelum itu anda harus mengerti apa maksud yang tertulis dalam kode tersebut, terutama di baris pertama “Order allow, deny”. Baris tersebut mengatur urutan evaluasi hak akses. Kata “Allow” di awal berarti daftar yang dilihat terlebih dahulu adalah alamat yang diperbolehkan. kemudian baru mengecek kode yang tidak diperbolehkan dibawahnya.

Seperti yang tertulis di contoh bahwa ada beberapa cara untuk melakukan pemblokiran. pertama, melalui penulisan IP Address secara lengkap (baris kedua). Kemudian bisa juga menuliskan bagian pertama IP address (baris ketiga), itu artinya 123.123.x.x akan diblokir. Anda juga bisa menuliskan beberapa IP Address dalam satu baris yang dipisahkan dengan spasi (baris keempat). Juga bisa melakukan pencegahan melalui nama domain.

Secara default, server apache menggunakan aturan “Order deny, allow”, yang berarti seluruh permintaan diperbolehkan. Namun yang pertama dilihat dari daftar alamat adalah bagian pemblokiran. Sehingga, bila anda menuliskan lagi kode diatas, Bisa disederhanakan sebagai berikut:

Deny from 192.168.11.12
Deny from 123.123.
Deny from 1.2.1.2  4.3.4.3 127.0.0.1
Deny from .facebook.com

Memblokir Akses Berdasarkan Referral

Selain berdasarkan IP, anda juga bisa memblokir akses berdasarkan referral nya. Yang dimaksud disini adalah alamat sebelumnya yang membawa permintaan ke alamat website anda, atau sederhananya darimana alamat permintaan itu berasal. Sebagai contoh, bila anda menuju alamat http://kedaikilat.com dengan cara mengklik link yang ada di http://ibagusm.web.id. Maka alamat terakhir itu yang menjadi referral nya.

Biasanya teknik ini digunakan untuk mencegah situs lain menggunakan resource file di tempat anda (semisal CSS atau gambar). sehingga trafik data server anda membengkak bukan karena permintaan pada server anda, tetapi sebagian tidak berasal dari website anda. Untuk mengaktifkan perintah ini, server apache anda harus terlebih dahulu mengaktifkan modul “mod_rewrite”. Pada XAMPP modul ini sudah aktif secara default. Tetapi pada server sewaan biasanya harus mengaktifkannya terlebih dahulu.

Contoh penulisan perintahnya seperti dibawah ini:

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

Perintah di atas akan memblokir segala permintaan yang referralnya berasal dari kedaikilat.com. Perhatikan bahwa penggunaan titik diawali dengan backslash. Setelah itu terdapat kode “[NC]” yang artinya Non-CaseSensitive yang berakibat 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} ibagusm\.com [NC,OR]
RewriteCond %{HTTP_REFERER} kedaikilat\.com
RewriteRule .* - [F]

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

Permintaan atau request yang diblokir akibat referral ini akan menampilkan pesan erroe 403. Anda bisa memodifikasi file error tersebut menjadi tampilan yang anda inginkan seperti yang telah saya jelaskan sebelumnya.

Memblok bot dan Program Crawler

Apabila anda memiliki webserver dengan bandwidth terbatas, alangkah baiknya anda mencegah bot atau program crawler lainnya (biasanya disebut spinder) mengakses web anda. Perlu diketahui bahwa setiap kunjungan yang diterima oleh webserver, selalu menyertakan informasi user agent. Bila melakukan browsing biasa, biasanya user agent berupa browser yang digunakan oleh pengguna. Berikut contoh kode yang bisa digunakan untuk memblok bot dan program rawler:

<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>

Untuk mengoptimalkan perintah diatas, anda harus memiliki daftar useragent yang betul-betul bot atau program crawler. Anda bisa menambahkannya sendiri pada kode di atas. Atau bila bingung bagaimana cara menambahkannya, bisa melihat panduan melalui internet, atau bisa lihat daftarnya sini » http://www.user-agents.org/

Mengubah TimeZone Server

Timezone server sangat menentukan ketika ada panggilan fungsi yang berhubungan dengan waktu, seperti “mktime”. Ketika settingan waktu salah, maka akan mengeluarkan hasil ketidak validan waktu. Anda bisa mengubahnya melalui htaccess melalui kode berikut:

SetEnv TZ Asia/Jakarta

Daftar lengkap Timezone bisa ditemukan di sini http://id1.php.net/manual/en/timezones.asia.php

Menolak Penampilan Daftar Direktori

Secara default, jika di dalam folder atau direktori tidak memiliki file index.html atau index.php, maka browser akan menampilkan daftar file dan direktori yang terdapat di folder tersebut. Bisa jadi ini adalah fitur yang bagus, namun juga bisa menjadi celah kemanan bagi pengelola server.

Directory list

By default, mesin-mesin webserver mengizinkan untuk menampilkan daftar direktori seperti di atas. Kode untuk mengaktifkan directori list dalam htaccess adalah:

Options +Indexes

Sedangkan untuk menonaktifkannya, adalah:

Options –Indexes

htaccess tidak sekedar berfungsi untuk mengaktifkan dan menon aktifkan list direktori. Tapi bila mana anda mengaktifkannya, maka anda juga bisa mencegaknya untuk ditampilkan. Anda bisa menggunakan kode sebagai berikut:

IndexIgnore *.gif *.zip *.txt blog.html

Kode diatas berarti file yang berekstensi .gif .zip .txt serta file blog.html tidak akan ditampilkan dalam daftar direktori.

Redirect

Ada kalanya anda ingin mengalihkan suatu alamat ke alamat lain. Mungkin ini terjadi ketika alamat anda yang lama berubah, sedangkan itu adalah alamat yang sudah dikenal oleh orang banyak. Maka anda bisa memanfaatkan fitur ini melalui htaccess. Berikut cara termudah untuk melakukan pengalihan:

Redirect /index.html /blog.html

Anda juga bisa melakukan pengalihan keseluruhan folder

Redirect /folderlama /folderbaru

Ada juga cara yang lebih ampuh untuk melakukan pengalihan dengan memanfaatkan kode RedirectMatch

RedirectMatch "\.html$" http://ibagusm.web.id

Pada perintah di atas, semua permintaan yang berakhiran .html akan diteruskan langsung ke home http://ibagusm.web.id

Mengganti File Default Pada Directory

Setiap server memiliki aturan sendiri dalam menampilkan halaman default saat kita mengakses suatu direktori. biasanya, apache akan mengakses file “index.html” kemudian “index.php” pada suatu directori. Mungkin akan berbeda pada mesin server yang lainnya.

Bila anda berkeinginan untuk mengubah pengaturan ini pada htaccess, bisa menggunakan kode berikut:

DirectoryIndex home-page.html

Dengan demikian, ketika pengguna mengakses suatu folder atau direktori tanpa diikuti nama file, maka akan menampilkan atau mengesekusi file “home-page.html”. Juga, anda bisa mengatur tidak hanya satu file saja, tapi bebrapa file. Seperti pada kode berikut:

DirectoryIndex home-page.html index.html index.php

Dengan cara diatas, mesin akan mencari file diatas. Dengan ketentuan, akan menampilkan “home-page.html”. Jika tidak ditemukan, maka akan menampilkan “index.html”, dan jika tidak ditemukan, akan menampilkan “index’php”. Artinya akan memperioritaskan yang petama kali ditulis (paling kiri).

Mengatur www atau non-www

Secara default, anda akan diarahkan kepada folder yang sama ketika mengakses suatu alamat website, menggunakan www ataupun tidak. Jadi ketika anda mengakses alamat ibagusm.web.id ataupun www.ibagusm.web.id, maka akan menampilkan halaman yang sama. Yang menjadi masalah adalah ketika terdapat 2 konten yang sama tetapi memiliki alamat yang berbeda, maka akana mengesankan bahwa website anda tidaklah konsisten.

Anda bisa mengatur apakah alamat website anda menggunakan www ataupun tidak. Sebagai contoh, ketikan anda mengakses www.ibagusm.web.id, maka akan otomatis mengarah ke http://ibagusm.web.id. Untuk kode pengaturan melalui htaccess, bisa menggunakan:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^ibagusm.web.id$ [NC]
RewriteRule ^(.*)$ http://ibagusm.web.id/$1 [L,R=301]

Dan ketika anda ingin alamat anda selalu di dahului www, maka bisa menggunakan:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^ibagusm.web.id [NC]
RewriteRule ^(.*)$ http://www.ibagusm.web.id/$1 [L,R=301]

Mau menggunakan awalan www ataupun tidak, semua tergantung pilihan anda.

Kompresi File

Salah satu fitur andalan yang bisa dilakukan oleh htacces lainnya adalah mampu mengkonfersi file yang dikirim dari server ke pengguna. Kompresi yang digunakan adalah Zlib. Berikut contoh kodenya:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Kode diatas memerintahkan untuk mengkompresi file teks, html, javascript, xml, css. Anda bisa menambahkan tipe file yang akan dikompesi sesuai kebutuhan anda.

Cache File

Mekanisme caching dapat mempercepat akses website karena file yang dicache tidak akan diproses ulang. Cara ini cukup efektif, dimana pengguna akan mengakses file yang ter-cache tanpa harus mendownload ulang file aslinya. Cache bisa terletak di server maupun di komputer pengguna. Berikut contoh kode untuk caching beberapa file:

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Anda bisa mengubah seberama lama cache akan disimpan dengan mengatur parameter “max-age”. Pastikan juga anda menyimpan file pada cache yang jarang sekali berubah. Karena terkadan ada file dinamis atau yang berubah-ubah. Seperti file script PHP, mungkin sebaiknya tidak dicache.

Nah, untuk menghindari cache untuk file yang dinamis ini, maka berikut contoh kode supaya file tidak ikut ter-cache:

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Maka dengan demikian file diatas tidak akan ikut ter-cache oleh server maupun pengguna (browser) setiap kali melakukan permintaan. Jadi browser akan selalu mendownload file terbaru.

Mengatur MIME Types

MIME Types mengatur tentang jenis apa file tersebut. atau sederhananya adalah sebuah ekstensi file sebagai acuan jenis file tersebut. contoh, file “.html” berarti file tersebut adalah sebuah dokumen HTML, file “.zip” berarti file tersebut adalah arsip ZIP, dan seterusnya. Terkadang web hosting tidak melakukan MIME Types secara benar. Untuk mengubahnya, anda bisa menambahkan kode berikut pada file htaccess:

AddType application/rtf .rtf
AddType image/gif .gif .GIF
AddType image/ief .ief
AddType image/jpeg .jpeg .jpg .jpe .JPG
AddType image/tiff .tiff .tif
AddType application/zip .zip
AddType application/x-mif .mif

Ada beberapa jenis MIME yang bisa anda lihat pada kode di atas. Anda juga bisa menambahkan trik yang diterapkan, misalnya trik untuk masalah file MP3 atau SWF yang tidak dijalankan, maka anda bisa mengatur MIME Types sepeeti ini:

AddType application/x-shockwave-flash .swf

Trik lain, beberapa browser mungkin akan menampilkan jenis file tertentu di browser tersebut, seperti file PDF atau DOC. Untuk “memaksa” agar browser langsung mendownload, anda bisa mengatur MIME Types dari ekstensi suatu file menjadi “aplication/octet-stream” seperti ini:

AddType application/octet-stream .pdf .doc

Dan anda juga bisa memanfaatkan untuk keperluan lain yang menjadi kebutuhan anda.

Itulah beberapa contoh trik yang dapat dilakukan memanfaatkan htaccess. Masih banyak trik yang bisa anda manfaatkan. Namun yang sangat perlu diingat sekali lagi adalah, bahwa perintah yang terdapat di direktori root, akan berdampak pada sub folder dibawahnya. Jadi berhati-hatilah menggunakan senjata ini, yang mungkin bisa membantu anda, atau malah bisa membuat stress anda. Selamat mencoba.

[Tambahan] Tabel Response Code

Di setiap permintaan, server apache akan memberikan response code di http header agar browser dapat memilih mana yang berhasil dan mana yang tidak berhasil atau error. Berikut daftar response code yang biasa digunakan:

Successfull Client Request

Code

Keterangan
200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content

 

Client Request Redirected

Code Keterangan
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy

 

Client Request Errors

Code Keterangan
400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URL Too Long
415 Unsupported Media Type

 

Server Errors

Code Keterangan
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
Dapet Duit Dari Twitter 728x90

Periksa Juga

htaccess dan fungsinya

Mengenal .htaccess dan Fungsinya (1)

Bahasan mengenai .htaccess adalah hal yang sangat dibutuhkan, terutama bagi developer website yang menggunakan bahasa …

Leave a Reply

Your email address will not be published. Required fields are marked *