File .htaccess merupakan file konfigurasi yang disediakan oleh web server Apache, yang biasanya digunakan untuk mengubah setting default dari Apache. Kita ketahui untuk saat ini sebagian besar hosting web di internet menggunakan Apache sebagai servernya sehingga bagi para pengelola web harus belajar tentang .htaccess supaya dapat melakukan modif terhadaf settingan default dari server.
File .htaccess adalah fil text ASCII sederhana yang biasanya diletakkan di direktori root. File ini diharuskan dalam format ASCII bukan format binary dan untuk file permission (atribut file) pada server hosting harus diset 644 (rw-r-r). Hal ini bertujuan agar server dapat mengakses file .htaccess, tapi mencegah user untuk mengakses file .htaccess dari beowser mereka. Karena file .htaccess diletakkan di direktori root maka file ini dapat digunakan untuk mengubah konfigurasi dari subdirektori-subdirektori yang ada di dalam direktori root. Sehingga untuk satu website biasanya kita cukup menediakan satu file .htaccess saja yang kita letakkan di dalam direktori root. Kode perintah yang ada di dalam file .htaccess harus ditempatkan dalam satu baris.
Sampai disini bisa dimengerti kan..... ? Baikalah lanjut,
Mungkin anda bertanya-tanya apa yang dapat di lakukan oleh .htaccess atau mungkin anda sudah membaca tentang hal tersebut, tapi tidak menyadari bahwa banyak hal yang dapat anda lakukan dengan file .htaccess. Berikut beberapa fungsi file .htaccess dan kode script yang harus dituliskan untuk menjalankan fungsi tersebut:
1. Membuat halaman pesan kesalahan sendiri
Dengan menggunakan file .htaccess anda dapat membuat halaman pesan kesalahan yang dapat digunakan untuk website anda sendiri dan tidak lagi menggunakan settingan default dari server.
Dengan menggunakan halaman pesan kesalahan sendiri dapat membuat website anda terlihat lebih profesional dalam menangani kesalahan yang terjadi bahkan juga mengijinkan anda untuk membuat script yang dapat memberitahu anda apabila terjadi kesalahan.
Anda dapat menggunakan pesan kesalahan anda sendiri selama anda mengetahui kode yang digunakan (seperti 404 untuk halaman tidak dapat di temukan/page not found) dengan menambahkan perintah di bawah ini ke dalam file .htaccess anda:
ErrorDocument kode /file.html atau
ErrorDocument kode http://www.domain.com/file.php
Sebagai contoh jika anda mempunyai file notfound.html di dalam root direktori dari website anda dan ingin menggunakannya untuk 404, anda dapat menggunakan baris di bawah ini :
ErrorDocument 404 /notfound.html atau
ErrorDocument 404 http://www.domain.com/notfound.php
Jika file tersebut tidak berada dalam root direktori dari website anda, anda hanya perlu menambahkan struktur direktori kedalamnya, contoh :
ErrorDocument 404 /error/notfound.htmlBerikut adalah pesan kesalahan yang sering terjadi:
401 - Authorization Required
400 - Bad request
403 - Forbidden
500 - Internal Server Error
404 - Wrong page
Kemudian, yang perlu anda lakukan adalah membuat file untuk menampilkan pesan kesalahan ketika kesalahan itu terjadi dan upload file-file tersebut, jangan lupa upload juga file .htaccess anda.
2. Bagaimana membatasi akses ke direktori berdasarkan IP address dengan menggunakan .htaccess file ?
Cara ini dapat dikatakan cara yang efektif untuk melindungi direktori yang ada dalam sebuah domain/site. Folder-folder selain yang terletak di dalam folder public_html juga dapat di lindungi dengan cara yang sama. Metode ini hanya dapat berjalan apabila anda memiliki account hosting dengan static IP address sendiri. Siapa saja yang berusaha mengunjungi direktori yang sudah di lindungi akan mendapatkan pesan kesalahan 403 Forbidden error.
Langkah-langkah untuk membuatnya :
Di direktori yang ingin anda lindungi buat atau buka .htaccess file.
Taruh kode di bawah ini dan ganti 192.168.0.1 yang ada di dalam contoh ini dengan IP Address yang ingin anda ijinkan.
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
Anda dapat memasukkan sebagian dari IP Address, seperti, 192.168.1
Anda dapat menambahkan IP Address lainnya dengan memisahkannya dengan tanda koma, seperti ini
192.168.1.1, 192.168.1. 5
Simpan file .htaccess Anda
3. Memblokir alamat IP tertentu,
Hal ini jika kita ingin agar alamat IP tertentu tidak dapat mengakses website yang kita miliki maka kita dapat menggunakan kode sebagai berikut:
Order Deny,Allow
allow from all
deny from 111.222.111.000
Maksud baris di atas adalah semua alamat IP akan diperbolehkan mengakses website kita kecuali alamat IP 111.222.111.000, sedangkan bila kita ingin memblokir alamat IP yang memeliki rentang dari sekian sampai dengan sekian maka kita perlu menambahkan kode:
deny from 111.222.111.
maksudnya adalah alamat IP dari 111.222.111.0-100 akan diblokir. Pengaturan yang kita lakukan ini juga akan terjadi seperti kita melakukannya di control panel (IP deny manager). Jika kita ingin memblokir berdasarkan alamat website, kita perlu menambahkan pada baris berikutnya sesuai dengan nama website yang akan diblokir dengan didahului tanda titik. contohnya:
deny from .domain.com
Selain itu kita dapat melakukan redirek halaman ketika kita akan melakukan perbaikan pada website atau blog kita, dan agar pengunjung langsung menuju ke halaman yang telah kita tentukan maka kita perlu menambahkan kode berikut ini:
order deny,allow
deny from all
allow from 192.168.1.1
ErrorDocument 403 /istirahat.html
allow from all
Maka ketika pengunjung lain yang datang akan langsung melihat halaman istirahat.html sedangkan alamat IP 192.168.1.1 (misalnya alamat IP punya kita) dapat mengakses website dengan normal (bukan halaman istirahat.html).
4. Canonicalization
Trik htaccess paling umum adalah mengetahui apakah halaman home website anda memiliki masalah canonicalization atau tidak. Canonicalization adalah satu website yang halaman homenya memiliki sejumlah format URL yang berbeda. Contohnya: www.domain.com, domain.com, www.domain.com/index.html, domain.com/index.html.
Canonicalization tidak bagus untuk SEO website anda sebab traffik menuju halaman home dihitung sebagai URL yang berbeda, meskipun isinya sama. Anda bisa mengatasi caninicalization dengan menambah script berikut pada file .htaccess anda. Script berikut akan memaksa berbagai format URL anda ke format
www.domain.com:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.domain.com/ [R=301,L]
5. Mematikan dan menampilkan directory listing
Menampilkan directory listing pada website bisa jadi merupakan salah satu masalah sekuriti yang harus diperhatikan. Sebab file-file apa saja yang ada di website anda bisa diketahui dengan musah oleh orang lain. Nah, sebaris kode berikut dapat mendisable directory listing pada website anda:
Options –Indexes
Untuk mengijinkan Directory Listing anda dapat menghapus line tersebut atau mengganti tanda - dengan tanda +.
6. Menyembunyikan jenis file tertentu dari directory listing
Atau jika anda memilih untuk tetap membiarkan directory listing anda menyala, anda bisa menyembunyikan jenis file tertentu agar disembunyikan dari directory listing.
IndexIgnore *.gif *.zip *.txt
7. Redirect halaman atau direktori
Misalnya kita membuat ulang seluruh website, lalu me-rename nama halaman atau direktori. Maka pengunjung halaman lama akan mendapat Error 404 File Not Found. Masalah tersebut dapat diatasi dengan melakukan redirect dari halaman lama ke halaman yang baru. Contohnya jika nama halaman lama adalah lawas.php dan nama halaman baru adalah anyar.php. Maka Anda bisa menambah sebaris kode berikut:
Redirect 301 /lawas.php http://www.domain.com/anyar.php atau
Redirect permanent /lawas.php http://www.domain.com/anyar.php
Sedangkan jika yang direname adalah nama direktorei, maka perintahnya adalah:
Redirect 301 /olddirectory http://www.domain.com/newdirektori/ atau
Redirect permanent /olddirectory http://www.domain.com/newdirektori/
8. Mencegah eksplorasi pada direktori.
Misalnya kita memiliki banyak file pada direktori tertentu, maka untuk mencegah pengunjung melihat keseluruhan dari isi direktori tadi maka kita perlu menambahkan file index.php pada setiap direktori akan tetapi hal ini tidak mungkin dilakukan dan sebagai gantinya kita hanya perlu menambahkan kode berikut ini:
Options All -Indexes
Sehingga setiap pengunjung yang mengetikkan url seperti ini, misalnya:http://www.domain.com/download maka akan timbul pesan error “404″ atau langsung me-redirect pada halaman lain sesuai dengan pengaturan yang kita lakukan.
9. Menggunakan file selain dari index.* di website
Secara default, halaman pertama dari website anda adalah index.* file karena file inilah yang akan pertama kali di cari oleh browser pengunjung, begitu mereka mengunjungi website. Tetapi mungkin dari kita ada yang berkeinginan untuk merubah websitenya untuk menggunakan nama file lain selain index.*.
Untuk melakukan hal ini cukup mudah dengan menggunakan .htaccess file dan perintah "Redirect 301". Redirect ini biasa digunakan untuk mengalihkan pengunjung website lama ke website anda yang baru.
Dalam contoh ini anda akan mengalihkan ke file home.html :
Di direktori yang ingin anda ijinkan Directory Listing, buat atau buka .htaccess file.
Taruh kode di bawah ini.
Redirect 301 /index.html http://www.namadomainanda.com/home.html
Simpan .htaccess dan upload file .htaccess anda bila belum di upload.
Tes hasil kerja anda dengan mengunjungi website anda yaitu http://www.domain.com, bila sukses maka alamat yang tampil akan menjadi http://www.domain.com/home.html dan menampilkan website anda.
10. Mengalihkan Domain yang di Parking ke Domain yang lain
Mempunyai domain yang berlainan atau lebih dari satu untuk website yang sama adalah hal yang biasa. Untuk menambahkan domain-domain tersebut ke dalam website yang sama, banyak orang menggunakan jasa "Parked Domain", di mana ketika seseorang mengunjungi domain tersebut akan langsung membuka website yang sama. Namun bagaimanapun juga dari sisi search engine optimisation, hal ini bukanlah hal terbaik yang harus di lakukan.
Dengan search engine seperti Google sebagai contoh, anda dapat kehilangan status ranking dari website karena memiliki tampilan yang sama untuk beberapa domain yang berbeda. Ketika Google mencari dan melihat website anda memiliki isi yang sama dengan domain yang berbeda, maka Google akan menghitungnya sebagai penjiplakan content atau isi website dan otomatis akan menurunkan status ranking. Semakin banyak Domain Parking yang dimiliki, semakin besar pengaruhnya ke ranking yang anda miliki.
Jika anda menaruh website anda di server yang menggunakan Apache, efek negatif dari Domain Parking dapat dihindari dengan menggunakan fungsi mod_rewrite. Bonus dari menggunakan metode ini adalah pengalihan yang dilakukan juga memberi tahu search engine bahwa tampilan yang sama yang berada di domain parking telah di pindahkan ke website dan tidak menghilang.
Ini berarti tidak akan terkena resiko kehilangan status ranking.
Untuk melakukan metode redirect ini, taruh kode di bawah ini di dalam .htaccess file Anda :
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.parkeddomain.com
RewriteRule ^(.*)$ http://maindomain.com/$1 [R=301,L]
Jika anda memiliki Domain Parking lebih dari satu atau ingin menghilangkan "www." dari domain anda, anda hanya perlu mengulang baris "RewriteCond" untuk setiap domain parking yang anda miliki dan tanpa www.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.parkeddomain1.com [OR]
RewriteCond %{HTTP_HOST} ^parkeddomain1.com [OR]
RewriteCond %{HTTP_HOST} ^www.parkeddomain2.com [OR]
RewriteCond %{HTTP_HOST} ^parkeddomain2.com
RewriteRule ^(.*)$ http://maindomain.com/$1 [R=301,L]
11. Pengaturan permalink,
Supaya dapat melakukan pengaturan pada permalink kita biar lebih SEO friendly kita dapat menambahkan kode berikut ini di file .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
12. Mencegah Hot Linking dan Bandwidth Leeching
Untuk mencegah orang lain melink secara langsung ke direktori image atau file anda dari website mereka sehingga mencuri bandwidth Anda, maka gunakan:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ – [F]
Perintah tersebut akan membuat direktori image hanya bisa diakses bila user sedang mengakses
www.domain.com. Anda jugabisa membuat sebuah gambar bila direktori image Anda dilink. Contohnya image jangan.gif yang bertuliskan: “Bilang dulu kepada yang punya jika mau ngambil.... kunjungi http://www.domain.com/image/ok.gif untuk melihat gambar yang kami miliki”, maka gunakan perintah:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainanda.com/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ http://www.domain.com/image/ok.gif [R,L]
13. Melindungi file wp-comment-post.php dan wp-confiq.php
Melindungi wp-comment-post.php dari spam Walaupun ada Akismet, tapi mungkin perlu juga Anda melindungi blog Anda dari serangan spambot yang mencoba mengirim komentar spam langsung melalui wp-comment-post.php tanpa mengakses blog kita. Berikut baris perintah yang perlu di sertakan di dalam file .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*domain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Sedangkan untuk melindungi file wp-config.php yang berisi informasi nama database, username database, dan password database, ditambahkan baris berintah seperti di bawah ini:
# protect wpconfig.php order allow,deny deny from all
14. Mengkonversi eksekusi file HTML ke PHP
Anda memiliki website HTML statis. Namun bagaimana jika suatu ketika anda ingin menjalankan kode PHP pada halaman HTML tersebut? Anda bisa menambahkan sebaris kode berikut.
AddHandler application/x-httpd-php .html
15. Mengakali query string
Website lain kemungkinan ada yang memasang link yang mengarah ke website anda dengan menambahkan query string. Contohnya www.domain.com/index.php?source=def.com. Query string dapat menciptakan masalah duplikasi konten pada website yang akan merugikan usaha SEO. Untuk menanggulanginya, bisa ditambahkan sebaris kode seperti berikut pada file .htaccess:
RewriteCond %{QUERY_STRING} ^source= RewriteRule (.*) /$1? [R=301,L]
16. Modifikasi URL dengan mod_rewrite
Jika ingin mengubah URL dinamis seperti www.domain.com/product.php?id=20 menjadi URL yang lebih statis & user friendly seperti www.domain.com/product/20. Maka bisa ditambahkan baris perintah seperti berikut ini pada file .htaccess:
RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]
17. Change Default Home Page
Maksudnya adalah file .htaccess dapat digunakan untuk mengubah nama default halaman home / halaman depan website. Agar pengunjung dapat mengakses website hanya dengan nama domain saja misalnya http://www.domain.com tanpa harus menuliskan nama file secara jelas seperti http://www.domain.com/file.html , maka harus ada file index di root direktori. Nama file yang dapat diterima antara lain index.html, index.htm, index.cgi, index.php dan lain-lain. Pastikan bahwa file itu bernama index.*
Ada tingkatan dalam pemberian nama file tersebut. Jika kita punya file index.cgi dan index.html di direktori root maka file yang di proses oleh server adalah file index.cgi, karena cgi tingkatannya lebih tinggi daripada html. Dengan file .htaccess kita dapat mendefinisikan file index tambahan atau dapat juga mengubah urutan tingkatannya. Untuk mendefinisikanhome.html sebagai halaman index, maka dapat ditambahkan kode perintah di dalam file .htaccess seperti berikut:
DirectoryIndex home.html
Hal ini akan memerintah server mencari file bernama home.html, jika server menemukan maka server akan menampilkannya. Tetapi jika tidak maka server akan menampilkan halaman error 404.
18. Override SSI Setting
Secara default hanya halaman web yang memiliki extensi .shtml yang dapat menjalankan server-side termasuk SSI di server. Dengan menggunakan file .htaccess kita dapat mengubah setting default tersebut supaya SSI dapat bekerja dengan format html. Untuk mengubah settingan itu diperlukan kode tambahan yang ditaruh di dalam file .htaccess sebagai berikut:
AddType text/html .html AddHandler server-parsed .html
Jika kita ingin halaman yang berekstensi .htm dan .html untuk dapat menjalankan SSI, maka file .htaccess dapat ditambahkan kode berikut ini :
AddType text/html .html
AddHandler server-parsed .html
AddHandler server-parsed .htm
19. Prevent Viewing of File .htaccess or Other FileUntuk mencegah user mengakses file .htaccess, ketikkan perintah berikut ini:
order allow, deny deny from all
Semoga bermanfaat