[ASK] Membuat Clean URL Menggunakan Htaccess


Status
Not open for further replies.

artayoga

Beginner 2.0
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...
 

Owlline

Beginner 2.0
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.
 

Andika Hermansyah

Beginner 1.0
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..
 

junior riau

Hosting Guru
Verified Provider
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:
Status
Not open for further replies.

Top