Skip to content

Panduan URL Rewriting

Konsep search-engine friendly adalah isu yang sangat penting dalam Search Engine Optimization. Intinya adalah bagaimana caranya agar website yang kita buat mudah dibaca dan di-indeks oleh search engine. Bayangkan saja, bagaimana mungkin kita bisa mengharapkan website kita memiliki peringkat bagus kalau search engine saja kesulitan mengindeksnya. Iya nggak?

Nah, salah satu faktor yang menyebabkan search engine seperti Google dan Yahoo mengalami kesulitan untuk mengindeks halaman website yaitu karena struktur URL website tersebut buruk dan sulit dimengerti. Contohnya adalah website dinamis dengan struktur URL yang diawali dengan tanda tanya (?).

Perhatikan struktur URL website seperti di bawah ini.

http://mysite.com/artikel.php?id=13

Apakah struktur URL seperti di atas mudah dibaca dan dipahami? Tentu tidak bukan? Struktur URL seperti itulah yang dikatakan tidak bagus bila ditinjau dari sisi SEO. Akan lebih baik apabila struktur URL di atas diubah menjadi seperti ini:

http://mysite.com/artikel/13

Atau bisa juga seperti ini:

http://mysite.com/artikel/judul_artikel

Nah, pada artikel ini kita akan membahas bagaimana cara mengubah struktur URL agar search-engine friendly seperti di atas. Mau tahu kan bagaimana lanjutannya? Ikuti terus pembahasannya di artikel ini. Oke?

Persyaratan yang harus dipenuhi adalah:

  • Web server yang dipakai adalah Apache
  • Modul mod_rewrite

A. MENGAKTIFKAN MODUL MOD_REWRITE

Mungkin Anda belum pernah mendengar modul mod_rewrite. Jangan khawatir. Modul ini biasanya sudah terinstall di Apache. Yang harus Anda lakukan hanyalah mengaktifkan modul tersebut.

Caranya adalah sebagai berikut:

1. Buka file konfigurasi Apache (httpd.conf)

2. Uncomment baris seperti di bawah ini (hilangkan tanda #).

#LoadModule rewrite_module modules/mod_rewrite.so
#AddModule mod_rewrite.c

3. Setelah itu restart web server Apache.

Jika kita menggunakan jasa web hosting biasanya modul ini sudah aktif. Jadi kita tidak perlu susah-susah lagi untuk mengaktifkannya.

B. FUNGSI YANG DIPAKAI

Ada dua fungsi di modul mod_rewrite Apache yang bisa kita pakai untuk mengubah struktur URL, yaitu 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 merupakan pola/struktur url yang dibuat, sedangkan substitution adalah file yang dituju untuk keperluan pemrosesan selanjutnya. Untuk struktur URL seperti kasus di atas, cara penggunaan RewriteRule tersebut adalah sebagai berikut.

1. Buatlah file .htaccess di lokasi direktori dimana dokumen web yang akan kita ubah struktur URL-nya tersebut berada

2. Ketikkan baris-baris berikut pada file tersebut.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /artikel/([0-9]+) /artikel.php?id=$1
</IfModule>

Dengan cara seperti di atas jika kita mengetikkan http://mysite.com/artikel/13 di web browser, otomatis akan diterjemahkan sebagai http://mysite.com/artikel.php?id=13.

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.

Adapun format pemakaian RewriteCond adalah sebagai berikut:

RewriteCond Something_to_test Condition

Kondisi yang didefinisikan dalam RewriteCond berpengaruh terhadap eksekusi fungsi RewriteRule. Pertama, mod_rewrite akan mengecek suatu URL dengan pola menurut RewriteRule.

Jika pola tersebut cocok, mod_rewrite akan mengecek apakah ada kondisi untuk aturan RewriteRule tersebut. Jika ada dan kondisi tersebut bernilai TRUE maka subsitusi yang sesuai pola RewriteRule tersebut akan dijalankan.

Nilai Something_to_test ada beberapa kategori, yaitu:

  • Variabel HTTP header:
    HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_FORWARDED, HTTP_HOST, HTTP_PROXY_CONNECTION, HTTP_ACCEPT
  • Variabel Connection & Request:
    REMOTE_ADDR, REMOTE_HOST, REMOTE_USER, REMOTE_IDENT, REQUEST_METHOD, SCRIPT_FILENAME, PATH_INFO, QUERY_STRING, AUTH_TYPE
  • Variabel Internal Server:
    DOCUMENT_ROOT, SERVER_ADMIN, SERVER_NAME, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, SERVER_SOFTWARE
  • Variabel System:
    TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY, TIME
  • Variabel khusus:
    API_VERSION, THE_REQUEST, REQUEST_URI, REQUEST_FILENAME, IS_SUBREQ

Condition dapat berupa string maupun regular expression dengan tambahan seperti berikut ini:

  • <, >, = dipakai sebagai operator perbandingan
  • -f jika Something_to_test adalah sebuah file
  • -d jika Something_to_test adalah sebuah direktori

Contoh pemakaiannya adalah sebagai berikut (diambil dari manual mod_rewrite):

RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^/$ /homepage.max.html [L]

RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule ^/$ /homepage.min.html [L]

RewriteRule ^/$ /homepage.std.html [L]

Aturan di atas maksudnya adalah jika browser me-request halaman indeks (homepage situs), ada 3 kemungkinan yang akan terjadi:

  • Browser dengan engine Mozilla akan menampilkan homepage.max.html
  • Jika browser-nya Lynx (browser berbasis teks) maka akan ditampilkan homepage.min.html
  • Apabila browser yang dipakai bukan Mozilla atau Lynx, halaman homepage.std.html yang akan ditampilkan

Selamat mencoba.

Tulisan Terkait:

Bagaimana Komentar Anda?

Monggo kalau Anda mau mengomentari tulisan di atas! Bertanya atau mengkritik juga boleh, tapi jangan terlalu menyakitkan :).

  • perempuan | February 11th, 2009 jam 10:52 am

    sepp.. dahh :D

    makasih inponya

  • Wahyu Wibowo | February 13th, 2009 jam 9:41 pm

    Sama-sama.

  • imutz | February 18th, 2009 jam 9:56 am

    klo buat URL kya gni gmana c

    http://mysite.com/artikel.php?id=13

  • romdhan | July 3rd, 2009 jam 9:17 pm

    mas mo tanya nich gimana sich caranya bikin file .htaccess untuk contoh alamat seperti ini :

    http://www.nama.co.cc/home.php?page=berita.html&id=2

    tapi ini yg shrusnya berita.php diganti dng berita.html (karna sudah di ubah menggunakan fungsi str_replace),,,

    itu gi mana yach????

    please dong pecahin masalah saya ?? :) :)

  • Wahyu Wibowo | July 4th, 2009 jam 8:27 am

    Maksudnya gimana ya, kok saya nggak paham. Barangkali ada yang bisa bantu? Gini saja, URL aslinya apa dan URL baru yang diinginkan seperti apa? :-)

  • romdhan | July 7th, 2009 jam 10:28 am

    maaf mas ,,

    ini url yg lama :
    http://www.nama.co.cc/home.php?page=berita.html&id=2

    dan ini url yg diinginkan:
    http://www.nama.co.cc/berita/2/judul-beritanya.html

  • Wahyu Wibowo | July 7th, 2009 jam 3:35 pm

    Edit file .htaccess:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule berita/(.*) home.php [L]

    Ambil REQUEST_URI-nya di file home.php, lalu diparsing:
    Contoh: (home.php)
    $arr_url = explode('/', $_SERVER['REQUEST_URI']);
    $id_berita = $arr_url[2];
    $judul_berita = $arr_url[3];

    Kurang lebih caranya seperti itu… :-)

  • romdhan | July 8th, 2009 jam 9:23 am

    terima kasih ya mas…….

    udah ngajarin ,, sip makin maju aja buat mas Wahyu Wibowo .. :P

  • arif | March 2nd, 2010 jam 11:32 am

    ijin copy pak :D , buat belajar :)

  • Wahyu Wibowo | March 3rd, 2010 jam 2:07 am

    Ya, silakan

  • svisnu | August 21st, 2010 jam 7:24 am

    saya coba koq gak bisa jalan ya bos,
    kalo hostingan ngecek aktif/tidaknya mod_rewrite.so gimana caranya?
    thks

    **tanya saja adminnya

  • Tips dan Trik URL Rewriting, Bag. 1 | Arvino Zulka Harahap | October 18th, 2010 jam 3:11 pm

    [...] waktu yang lalu saya pernah menulis sebuah artikel yang berjudul Panduan URL Rewriting. Topik ini sangat menarik, karena banyak sekali aplikasi web yang memanfaatkan teknik URL Rewriting [...]

Tinggalkan Pesan