URL Rewrite menggunakan .htaccess

 

Jika kita melihat link suatu artikel atau berita suatu situs web atau blog, seperti :

http://belajarcheat.wordpress.com/website/Cheat-Baru/ atau seperti http://www.situsberita.com/berita12-Tentang-Korupsi.html

Bisa jadi itu bukan link sebenarnya, tetapi bisa jadi merupakan alias dari

http://blogku.wordpress.com/index.php?page=1&kategori=2

atau

http://www.situsberita.com/selengkapnya.php?id=12.

Kenapa sih URL harus diubah-ubah atau disamarkan seperti itu? Pertama untuk security, sehingga penjahat tidak tahu apa alamat atau url sebenarnya. Kedua, supaya SEO friendly, search engine google lebih suka URL berita12-Tentang-Korupsi.html dari pada selengkapnya.php?id=12. Bagaimana cara mengubah url seperti tersebut? Kita gunakan URL Rewriting pada .htaccess.

Pada tutorial kali ini kita akan mempelajari cara membuat URL Rewriting atau URL redirect menggunakan .htaccess. Apa itu URL rewriting? Yaitu semacam cara untuk me-rename atau menulis ulang suatu url oleh web server sebelum diolah oleh server side script (PHP, ASP, dan lainnya). Apa itu .htaccess? yaitu semacam file teks konfigurasi suatu web server, sama seperti httpd.conf, hanya saja file .htaccess bisa di letakkan di mana saja.

Di sini kita akan mempelajari penerapan URL rewriting, yaitu bagaimana meng-generate url berita12-Tentang-Korupsi.html yang berasal dari database MySQL, kemudian kita akan belajar bagaimana mengubah URL tersebut menjadi selengkapnya .php?id=12 sehingga kita bisa melakukan query ke database MySQL.

Langkah-langkah dan algoritma:

  1. Mengaktifikan module mod_rewrite web server Apache
  2. Membuat file .htaccess
  3. Membuat tabelberita pada database MySQL
  4. Menampilkan berita dan meng-generate URL yang SEO friendly
  5. Menampilkan berita selengkapnya yang berasal dari URL SEO friendly menggunakan PHP dan MySQL
  6. Kode Lengkapnya
  7. Contoh-contoh URL Rewriting lainnya pada .htaccess

Mengaktifikan module mod_rewrite web server Apache

Sebelum memulai, kita melakukan aktifasi module mod_rewrite web server Apache. Caranya:

  1. Cari dan edit file httpd.conf
  2. Cari teks berikut :
    #LoadModule rewrite_module modules/mod_rewrite.so
  3. Hilangkan tanda pagar (#), sehingga menjadi:
    LoadModule rewrite_module modules/mod_rewrite.so
  4. Simpan, restart web server Apache

Membuat file .htaccess

File .htaccess merupakan file teks biasa, cara membuatnya gunakan text editor seperti winsyntax atau notepad++. Ketik pada text editor anda kode berikut:

RewriteEngine On
RewriteBase /situsberita/
RewriteRule ^berita([0-9]+)-(.*)\.html$ selengkapnya.php?id=$1

lalu simpan dengan nama .htaccess, pada contoh di atas saya menyimpan file .htaccess di folder situs berita yang berada di document root anda.

Jadi pada contoh berikut kita akan membuat situs berita, di mana file – file situs berita kita taruh di folder yang kita beri nama situs berita, sehingga kalau anda buka di browser urlnya adalah :

  • http://localhost/situsberita

Keterangan kode :

  • RewriteEngine On, Mengaktifkan RewriteEngine
  • RewriteBase /situsberita/, karena kita menaruh file .htaccess di folder situsberita dan url yang akan di-rewrite adalah http://localhost/situsberita/
    Jika anda ingin me-rewrite http://localhost/ makan kodenya RewriteBase /
  • RewriteRule, berguna untuk mecari pola url dan jika ketemu akan mereplacenya dengan url yang kita inginkan.
    Sintaks :
    RewriteRule pola_URL <spasi> URL_pengganti
  • Pola_URL, menggunakan regex
  • ^berita([0-9]+)-(.*)\.html$, artinya cari pola url yang diawali tulisan berita, kemudian ada angka kemudian diikuti strip tengah (-) kemudian ada karakter atau tulisan apapun, diakhiri dengan .html
    akan cocok dengan berita12-bla-blabla.html, berita233-terserah-tulisan-apa-disini.html, dan lainnya

    Meta Karakter Definisi Contoh
    ^ Pencocokan di awal string ^hai akan cocok dengan haiii, haiapakabar
    $ Pencocokan di akhir string tes$ akan cocok dengan pantes, kates
    . Cocok dengan satu karakter apapun
    * Berjumlah 0 atau lebih
    + Berjumlah 1 atau lebih
    ( ) Pengelompokkan pola
    [ ] Pendefinisian kelas karakter [0-9] akan cocok dengan angka
    [a-z] akan cocok dengan huruf kecil
    [^a-z] bukan huruf kecil
    \ Escaping karakter, berguna bila ingin mencocokkan karakter, tetapi karakter tersebut merupakan anggota meta karakter Ingin mencocokkan titik, maka kode regexnya adala \.

    (silahkan pelajari tentang regular expression)

  • selengkapnya.php?id=$1, adalah url pengganti jika ditemukan pola di atas. $1 adalah pola yang cocok yang ditemukan dalam pengelompokan pola. Pengelompokan pola ada pola yang berada di antara “(” dan “)”
    Pada pola regex di atas:
    $1 adalah ([0-9]+)
    $2 adalah (.*)

Membuat tabel berita pada database MySQL

Saatnya kita mengaplikasikan URL Rewriting dalam bentuk aplikasi situs berita kita, berikut adalah struktur tabel tabel berita di MySQL

CREATE TABLE `tabelberita` (
  `beritaid` int(11) NOT NULL auto_increment,
  `judul` tinytext NOT NULL,
  `tanggal` date NOT NULL,
  `kategori` varchar(30) NOT NULL,
  `pendahuluan` text NOT NULL,
  `lanjutan` text NOT NULL,
  PRIMARY KEY  (`beritaid`)
) 

Menampilkan berita dan meng-generate URL yang SEO friendly

Berikut kode PHP untuk mengambil data dari database MySQL kemudian menampilkan 10 berita terbaru, kemudian kita membuat link url untuk selengkapnya. 

<?php
include "koneksi.php";

$berita = mysql_query("SELECT * FROM tabelberita ORDER BY beritaid DESC LIMIT 10");
while($b = mysql_fetch_array($berita)){
    //mengubah spasi menjadi -
    $judul = preg_replace("/\s/","-",$b['judul']);

    //menambahkan kata "berita" pada awal url dan ".html" pada akhir url
    $url_link = "berita".$b['beritaid']."-".$judul.".html";

    echo "<a href=\"".$url_link."\"><h2>".$b['judul']."</h2></a>";
    echo "<font color=red>".$b['tanggal']." Ketegori: ".$b['kategori']."<br></font>";
    echo $b['pendahuluan']."<br>";
    echo "<a href=\"".$url_link."\">Selengkapnya</a>";
    echo "<hr>";
}
?>

Menampilkan berita selengkapnya yang berasal dari URL SEO friendly menggunakan PHP dan MySQL

Berikut adalah kode PHP untuk menampilkan berita selengkapnya jika user mengklik link selengkapnya, seperti contoh berikut :

  • http://localhost/situsberita/berita3-Jangan-Takut-untuk-Donor-Hati.html

 

<?php
include "koneksi.php";
$id = $_GET['id'];
$berita = mysql_query("SELECT * FROM tabelberita WHERE beritaid=$id");
while($b = mysql_fetch_array($berita)){
    echo "<a href=\"".$url_link."\"><h2>".$b['judul']."</h2></a>";
    echo "<font color=red>".$b['tanggal']." Ketegori: ".$b['kategori']."<br></font>";
    echo $b['pendahuluan']."<p>";
    echo $b['lanjutan'];
}
?>

Semoga penjelasan di atas dapat membantu dan memberi sedikit pemahaman kepada para user…

 

Pin It on Pinterest

Share This