Trik URL Rewriting

Apa sih URL Rewriting?  URL rewriting adalah penulisan ulang URL (jiah cm ditranslate doang  -_-). Gimana ya, susah mengungkapkan nya dengan kata-kata (yaelah, bilang aja kgak tau). Kalo disuruh ngasi tau apa definisinya/pengertiannya, saya sendiri juga ga pinter merangkai kata-kata. Baiknya langsung aja saya kasih contoh.
Misalnya ada sebuah tautan/URL ---> http://kimcila.biz/index.php?type=perawan&level=1 
 
Struktur URL tadi mungkin kurang begitu mudah dipahami oleh sebagian orang, kalau URL dengan struktur yang diatas sulit dimengerti oleh manusia, apalagi dimengerti oleh mesin pencari, bisa-bisa website kita jauh dari pencarian. dan efeknya  berkurangnya visitor, jadi berkurang pelanggan, sehingga penghasilan juga berkurang L. Jadi URL rewriting juga sangat berpengaruh dari sisi SEO website kita .URL diatas akan lebih baik jika strukturnya seperti ini ---> http://kimcila.biz/layanan/perawan/1 .  Nah,, gimana caranya buat URL rewriting kaya diatas?
Mari kita bahas Caranya, pertama syaratnya yaitu:
> Web server yg dipakai Apache (kalau web server yg lain belum tau saya)
> Modul mod_rewrite
Aktifkan dulu modul mod_rewrite , caranya : buka file konfigurasi nya di folder apache, trus cari file http.conf
Uncomment baris seperti di bawah ini (hilangkan tanda #).
#LoadModule rewrite_module modules/mod_rewrite.so
#AddModule mod_rewrite.c

kalo udah, restart service apache nya.

Di dalam modul mod_rewrite, ada dua fungsi. Yaitu fungsi RewriteRule dan RewriteCond. RewriteRule adalah fungsi yang sangat sederhana untuk memberitahu mod_rewrite apa yang harus dilakukan Sedangkan RewriteCond dipakai untuk memeriksa suatu kondisi, mirip dengan konsep if … then … .
Aturan penggunaan RewriteRule adalah sebagai berikut:
RewriteRule Pattern Substitution [Flag(s)]

Pattern itu maksudnya pola/struktur url yang dibuat, trus kalau substitution adalah file yang dituju untuk keperluan pemrosesan selanjutnya.

Kita coba RewriteRule yg simple dulu,
Buat file php dengan isi seperti ini
   
<?php echo “test simple url rewriting”; ?>
 
simpan dengan nama test.php


Kemudian buat file .htaccess yang isinya begini :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*).html$ $1.php [NC]
</IfModule>
 
Letakkan file .htaccess ini satu folder dengan file test.php , nah sekarang coba akses file test td di browser dengan URL http://localhost/test.html jika muncul tulisan test simple url rewriting. Berarti URL rewriting kita berhasil. Lhoh ! kok bisa? Kan tadi yang dipanggil test.html,  kenapa malah isi dari test.php yang muncul. Yah itu karena kelakuan si mod_rewrite td,  normalnya ketika kita akses test.html harusnya muncul error 404. Kan file test.html ga ada, tp karena ilmu sihir si mod_rewrite, pas kita akses test.html kita diarahkan ke file test.php, coba aja hapus file .htaccess nya, dan akses kembali test.html, apa yang terjadi?

Aturan yang ada di .htaccess ini juga berlaku untuk semua file, misal ada file login.php, jd ketika kita panggil login.html maka akan diarahkan ke file login.php. Tanda [NC] pada file .htaccess diatas maksudnya yaitu No Case atau case-insensitive alias tidak membedakan pemakaian huruf besar maupun kecil pada alamat URL.
Untuk struktur URL seperti contoh di awal tulisan ini, yg  http://kimcila.biz/layanan/perawan/1 ,
 
coba buat file php dengan isi kaya gini
<?php
switch ($_GET['level'])
{
   case 01:
      $level = 'highclass';
      break;
   case 02:
      $level = 'mediumclass';
      break;
   case 03:
      $level = 'lowclass';
      break;
}
?>
<html>
<head>
   <title>Test URL Rewriting</title>
</head>
<body>
<?php echo 'Anda memesan layanan type ' . $_GET['type'] . ' level ' . $level ?>
</body>
</html>


simpan dengan nama index.php
trus buat file .htacsess nya dengan RewriteRule nya kaya gini :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^layanan/([a-zA-Z]+)/([0-9]+) index.php?type=$1&level=$2 [NC]
</IfModule>

Penulisan mod_rewrite harus diapit oleh dan
. Fungsi diatas adalah untuk mencegah terjadinya pesan kesalahan "500 Internal Server Error" saat page request.
Untuk membuat rule baru, kita tulis RewriteRule. kemudian, kita gunakan tanda ^ untuk memulai rule tersebut.

([a-zA-Z]+)
berarti membatasi agar karakter yang diterima hanya berupa huruf a sampai z baik itu huruf besar atau kecil.
([0-9]+) berarti membatasi agar angka yang diterima hanya berupa angka 0 sampai 9.
Tanda + berarti angka/huruf tersebut boleh lebih dari 1.


Dengan cara seperti di atas jika kita mengetikkan http://localhost/layanan/perawan/1 di web browser, otomatis akan diterjemahkan sebagai http://localhost/index.php?type=perawan&level=1.

Sama dengan

Hanya dengan satu fungsi saja, yaitu RewriteRule, sebenarnya kita sudah bisa membuat URL Rewriting. Tetapi jika dikombinasikan dengan RewriteCond, kita bisa membuat beberapa aturan yang lebih kompleks lagi. Untuk RewriteCond , next  posting  aja yak.. :p
Previous
Next Post »

9 komentar

Tulis komentar
kukuk
AUTHOR
11/6/13 11:54 delete

ilmu yang mempelajari ini apha gan?(gantungan kunci)wkwkwkwk jaskid...

Reply
avatar
abcdefghaniv
AUTHOR
11/6/13 13:36 delete

bruakakakakak..

Reply
avatar
agus
AUTHOR
29/12/13 11:04 delete

Gan masih bingung

Reply
avatar
abcdefghaniv
AUTHOR
29/12/13 13:35 delete

bingung nya dimana gan ?

Reply
avatar
Dika
AUTHOR
17/1/14 22:38 delete

izin bookmark dulu gan.. B-)

Reply
avatar
Ega Teja
AUTHOR
11/12/15 11:06 delete

kalo misal mau rewrite aja gmna. ?
jadi link yg udh di rewrite itu gk bisa di akses . ?
misal kita punya link localhost/belajar/posts/berita/id=1
nanti di rewrite tampilnya localhost/belajar/posts/berita/1
tapi ketika kita akses localhost/belajar/posts/berita/1 itu nanti hasilnya ga bisa.
gmna caranya. ?

Reply
avatar
abcdefghaniv
AUTHOR
11/12/15 13:11 delete

ngapain di rewrite kalo gak dibolehin akses.
langsung aja di blok. sejak awal kalo url yg dimaksud gak boleh diakses.

Reply
avatar
Unknown
AUTHOR
13/3/16 17:57 delete

mantab gan share ilmunya. buar seo.
mitsubishimobiljakarta.com

Reply
avatar
Ega Teja
AUTHOR
1/11/17 16:08 delete

maksudnya kalo di akses langsung, tanpa klik

Reply
avatar

- Kritik dan saran sangat saya nantikan untuk kemajuan blog ini.
- Silakan report, jika ada link yang mati.
- Mohon untuk berkomentar sesuai dengan tema postingan.
- Dilarang berkomentar yang mencantumkan LINK AKTIF.
ConversionConversion EmoticonEmoticon