Mengenal Fungsi dan Penggunaan File .htaccess
Di Artikel kali ini, saya akan membahas tentang File .htaccess, berawal dari pertanyaan kang @Hasan Muhammad tentang Bagaimana membuat halaman 404 di PHP Native, apakah harus membuat file .htaccess kang?
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 file 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:
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
ErrorDocument 404 /notfound.html atau
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
ErrorDocument 404 /error/notfound.html
Berikut adalah pesan kesalahan yang sering terjadi:
401 - Authorization Required
400 - Bad request
403 - Forbidden
500 - Internal Server Error
404 - Wrong page
Jika file
tersebut tidak berada dalam root direktori dari website anda, anda
hanya perlu menambahkan struktur direktori kedalamnya, contoh
:
ErrorDocument 404 /error/notfound.html
Berikut 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. 5Simpan 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
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
<Files istirahat.html>
allow from
all
</Files>
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]
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]
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]
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 mendefinisikan home.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 File
Untuk mencegah user mengakses file .htaccess, ketikkan perintah berikut ini:
order
allow, deny
deny from all
Semoga bermanfaat
Post a Comment
Untuk menyisipkan kode pendek, gunakan <i rel="code"> ... KODE ... </i>
Untuk menyisipkan kode panjang, gunakan <i rel="pre"> ... KODE ... </i>
Untuk menyisipkan gambar, gunakan <i rel="image"> ... URL GAMBAR ... </i>