Mod_rewrite untuk server Apache dan IIS

Written by oktasihotang | dibaca : 1203 kali

Selama ini, saya melihat alamat link dari setiap website yang saya buka adalah asli dari fungsi yang ada, misalkan :
http://example.com/index.php?id=12 atau http://example.com/index.php?newsID = 12 , dsb
so…kita bisa menebak – nebak ID yang ada (iya klo ID nya nggak di encrypt).
Sebenarnya udah lama sih aq bertanya – tanya, ada alamat link dari web spp ini : http://example.com/2008/02/02/ah.htm like this CMS dan bagaimana ya kira-kira cara pembuatannya ??
Hmmnn..setelah melalangbuana dari sabang ampe merauke, dari ujung kaki ke ujung kepala..hallah.. :) , ya mencoba ikut2an milist php-id dan akhirnya lumayan mengerti cara pembuatan link tersebut…
Dan ternyata, solusinya adalah pemakaian URL Rewriting Engine, jadi setiap link website yang kita generate dapat dimanipulasi dengan URL tahun, bulan, tanggal, dkk.

Sekilas tentang mode_rewrite

This module uses a rule-based rewriting engine (based on a regular-expression parser) to rewrite requested URLs on the fly. It supports an unlimited number of rules and an unlimited number of attached rule conditions for each rule to provide a really flexible and powerful URL manipulation mechanism. The URL manipulations can depend on various tests, for instance server variables, environment variables, HTTP headers, time stamps and even external database lookups in various formats can be used to achieve a really granular URL matching

Jadi agar pen-generate-an link website kita menjadi lebih flexible and powerful URL manipulation, mungkin satu-satunya cara dengan menggunakan URL Rewriting Engine ini, welleh..kok jadi promosi ya :)

Here are the related link for URL Rewriting Engine too :
1. http://www.sitepoint.com/article/guide-url-rewriting
2. http://www.sitepoint.com/article/guide-url-rewriting/2
3. http://www.sitepoint.com/article/guide-url-rewriting/3
4. http://www.sitepoint.com/article/guide-url-rewriting/4

Semoga membantu :)

9 Comments (Upil) Betebaran Disini...

  1. Ecko Manalu says:

    nice :) , you notice the same thing as i did
    kalau buat WordPress dan Drupal,
    dia ga pake mod_rewrite dek, tapi pake konsep clean url.
    konsep clean url dilakukan dengan cara memparse URI.
    jadi, query dan request2 lainnya didasarkan pada URI.
    seperti pada halaman ini, URI nya adalah:
    http://ochta.wordpress.com/2008/02/26/mod_rewrite-untuk-server-apache-dan-iis

    URI diparse berdasarkan tanda slash.
    di PHP diimplemen dengan cara :

    $uri = $_SERVER['REQUEST_URI'];
    $request = explode(’/’, $uri);
    array_shift($request); //untuk meng-exclude URL dari URI

    kedua metode (mod_rewrite dan php parse clean URL) ada keunggulannya masing2
    1. Kalau pake mod_rewrite bisa berlaku kalau kita memang orang yang punya otoritas thd server, serta kalau ud diimplement sekali, tinggal dipake aja, ga perlu di parse berulang2 :) dan shortcutting long file path nya itu sangat membantu :)

    2. Kalau pake clean url PHP, berguna ketika kita tidak punya otoritas dalam mengubah settingan APACHE conf.

    keep posting dek :) nice article !

  2. abang ada contohnya untuk methode yang clean URL ??, masih bingung neh bang.. :(
    memang untuk methode yang mod_rewrite itu kita ada meng-configure server apachenya, so klo bagi developer web mesti ada nego ama admin server yang akan dijadikan web hosting… :)

  3. Ecko Manalu says:

    Contohnya :
    kalau biasanya untuk menampilkan news:
    URL 1:
    http://somedomain.com/?operation=ViewNews&newsID=NEWS0009

    kalau di clean url itu spt ini:
    URL 2:
    http://somedomain.com/viewNews/NEWS0009

    perlakuannya sebenarnya sama. kita ngeparse juga.
    kalau di URL 1, kita ngeparse request berdasar Get request,
    misal
    $operation = $_GET['request'];
    $newsID = $_Get['newsID'];

    tapi kalau di URL 2, kita ngeparse berdasarkan URI.
    URI = URL domain + parameter setelah URL domain.
    pada URL 2, URI nya adalah “somedomain.com/viewNews/NEWS0009
    nah, kita pecah URI tersebut menjadi parameter, dengan code ini:

    $request = explode(’/’, $uri);
    //artinya kita memecah URI ke array string berdasar tanda slash.

    nah code ini menghasilkan array string $request,
    dengan anggotanya adalah
    $request[0] = ‘somedomain.com’
    $request[1] = ‘viewNews’
    $request[2] = ‘NEWS0009′

    nah pada kode sebelumnya ada aku buat:
    array_shift($request);
    artinya, kita meremove first element of array, shg yang tertinggal adalah
    $request[0] = ‘viewNews’
    $request[1] = ‘NEWS0009′

    dari kedua string yang dihasilkan ini kita bisa lakukan hal:
    if ($request[0]==’viewNews’){
    showNews($request[1]);
    }
    else{
    …..
    }

    semoga ngerti :)

  4. Ecko Manalu says:

    koreksi :)

    $request = explode(’/’, $uri);

    seharusnya jadi
    $uri = $_SERVER['REQUEST_URI''];
    $request = explode(’/’, $uri);

  5. ohh..begitu ya bang,
    so..untuk pembuatan ‘NEWS0009′ (ID dari NEWS) itu, berarti kita buat string + hasil random untuk IDnya ??

    wah..boleh juga neh dicoba – coba ?? :)
    thnx bang….

  6. Anak Medan says:

    gabung di ID-Php juga yoo ? hehehe… Anyway. jangan sembarangan untuk merubah rubah/memakai permalink. Kalau bisa juga jangan diubah ubah. Cukup sekali saat membuat. bisa jadi double index sama google kalau kita main main pakai cara ini.

    *walau ada caranya :p

  7. @Anak Medan
    Ooppsss….
    begitu ya…. :)

  8. Congratulations for the outstanding weblog posting! I discovered your post truly interesting, I believe you’re a intelligent writer. I add in your blog to my bookmarks and can return within the lengthy term. I need to inspire you to continue that marvelous function, have a superb day!

Tinggalkan Upilmu Disini...