[ASK] Membuat Clean URL Menggunakan Htaccess

Discussion in 'Desain Web dan Programming' started by artayoga, 12 Nov 2014.

Thread Status:
Not open for further replies.
  1. artayoga

    artayoga New Member

    Messages:
    9
    Likes Received:
    0
    Trophy Points:
    1
    Tuan saya mau bikin clean URL menggunakan Htaccess seperti wordpress gitu. udah beberapa kali coba, tapi masih belum sesuai dengan yang diharapkan. Jadi saya kepingin itu URLnya seperti wordpress yang pada URL artikel tidak ada id artikel hanya ada judul artikel saja. (id artikel tidak tampil pada url).

    Contoh struktur web simple na seperti ini.

    didalam root folder web saya ada :
    1 folder css

    <?php
    include "koneksi.php";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <link href="css/style.css" rel="stylesheet" />
    </head>

    <body>

    <?php include "bukafile.php"; ?>

    </body>
    </html>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php
    $detail=mysql_query("SELECT * FROM artikel WHERE id_artikel='$_GET[id]'");
    $r = mysql_fetch_array($detail);

    echo "<p>$r[judul]</p>";
    echo "<p>$r[content]</p>";

    ?>
    </body>
    </html>

    <?php
    switch ($_GET['page']){
    case '' : if(!file_exists ("home.php"))
    die ("File tidak ada");
    include "home.php";
    break;
    case 'artikel' : if(!file_exists ("artikel.php"))
    die ("File tidak ada");
    include "artikel.php";
    break;
    default: break;
    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php
    $sql=mysql_query("SELECT * FROM artikel order by id_artikel");
    while ($r=mysql_fetch_array($sql)) {
    ?>

    <p><?php echo"Judul : $r[judul]"; ?></p>
    <p><?php echo"<a href='index.php?page=artikel&id=$r[id_artikel]'>detail artikel</a>"; ?></p>

    <?php
    }
    ?>
    </body>
    </html>

    Dari contoh diatas, maka URL yang muncul pada saat klik link detail artikel seperti ini : http://localhost/url/index.php?page=artikel&id=1
    Yang saya harapkan URL nya seperti ini : http://localhost/url/artikel/artikel-pertama

    id_artikel diganti menjadi judul artikel saja yang tampil.
    Adakah master2 disini yang mau membimbing saya ke jalan yang benar...

    Terima kasih atas bantuannya...
     
  2. xevil

    xevil Beginner 1.0

    Messages:
    46
    Likes Received:
    3
    Trophy Points:
    8
  3. Owlline

    Owlline Beginner 2.0

    Messages:
    14
    Likes Received:
    2
    Trophy Points:
    3
    Code:
    RewriteEngine On
    
    RewriteRule ^artikel/([^/]+)/?$ http://localhost/url/index.php?page=artikel&id=1
    
    diatas contoh untuk penulisan htaccess untuk file artikel
    artinya ketika ada yang menuliskan http://webanda.com/artikel/xxx

    akan di arahkan ke alamat asli http://localhost/url/index.php?page=artikel&id=$1
    nantinya xxx akan di substitusikan ke $1.

    ^xxxx = artikel yg tertulis/diinginkan setelah domain.
    ([^/]+)= ini salah satu parameter/syntax di htaccess yang nantinya akan menjadi parameter dinamis.
    $ sebelum spasi = merupakan syntax penutup URL
    setelah spasi adalah link ASLI sebelum di rewrite mas.
     
  4. Andika Hermansyah

    Andika Hermansyah Beginner 1.0

    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
    Bisa menggunakan .htaccess untuk kasus mas tersebut, contohnya:
    Code:
    RewriteEngine on
    RewriteRule ^artikel/([a-zA-Z-]+)$/?$ ./index.php?page=artikel&judul=$1 [QSA,L]
    [a-zA-Z-]=hanya membaca char alfabet dan tanda pisah - (strip/minus)

    kalau melihat code dari mas berikan, masih menggunakan ID. Jadi kodenya harus dirombak dahulu agar membaca string bukan int (id). Biasanya saya menggunakan kolom khusus untuk URL alias, ex: judul-artikel-pertama. Lebih memudahkan querynya membaca dari database.

    Semoga membantu..
     
  5. junior riau

    junior riau Hosting Guru Web Hosting

    Messages:
    3,227
    Likes Received:
    514
    Trophy Points:
    113
    saya coba bantu ya
    ini konsep nya sama dengan wordpress

    htaccess
    Code:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
    </IfModule>
    
    fungsi slug url
    bisa ikuti ini
    http://www.paulund.co.uk/how-to-create-a-url-slug-with-php
    http://css-tricks.com/snippets/php/create-url-slug-from-post-title/

    di code php nya kita
    kalau awalnya yang kta echo di <a href></a> itu id artikel contoh
    Code:
     <?php echo "<a href='index.php?id='".$data['idartikel']."'> read more </a>";?>
    menjadi
    Code:
     <?php echo "<a href='".clean_url($data['title'])."'> read more </a>";?>
    dimana clean_url() adalah fungsi slug url seperti pada link

    ketika read more di klik otomatis url di address bar seperti ini

    http://host.tld/judul-artikel-satu/

    ini fungi yang saya gunakan untuk mendapatkan request URI

    Code:
    public static function getURI(){
            $ru= $_SERVER["REQUEST_URI"];
            $uri=str_replace(self::getBasePath(), "", $ru);
            $res=explode("/",preg_replace('{^/|\?.*}', '', $uri));
            return $res;
        }
    
    hasil fungsi itu dalam bentuk array
    karena setelah host langsung clean url jadinya 1 array, kalau ada tambahan misal
    http://host.tld/artikel/judul-artikel-satu/
    maka hasil array nya ada 2
    [0]=> artikel
    [1]=> judul-artikel-satu

    jadi yang kita gunakan untuk select data adalah yang array [1]
    jangan lupa remove dulu strip nya untuk melakukan selct artikel berdsar judul


    selamat mencoba
     
    Last edited: 8 Jan 2015
Loading...
Thread Status:
Not open for further replies.

Share This Page

Loading...