Artikel PHP/MySQL
Mempersingkat URL website dengan menggunakan .htaccess
Ditulis oleh Dhimas Ronggobramantyo
Kategori: PHP/MySQL
Dibaca 11534 kali
Anda lihat link halaman ini dibrowser anda? seperti apa linknya?
Ya, kali ini saya akan mengajarkan bagaimana kita dapat membuat link seperti itu pada PHP dengan memanfaatkan .htaccess. Kalau orang-orang menggunakan metode mod_rewrite atau ada yang menyebut istilahnya shortened url. Terserahlah apa namanya, yang penting sekarang adalah cara membuatnya.
.htaccess
.htaccess merupakan file konfigurasi untuk server Apache, nah disni kita akan mengkonfigurasi file tanpa ekstensi agar dianggap menjadi file php. .htaccess harus diletakkan di root direktori server anda. Oke pertama-tama anda buat dulu file .htaccess. Caranya terserah anda, kalau bingung buka notepad, kemudian klik Save as, Save as type nya diubah diubah ke All Files. Kemudian file namenya diisi dengan .htaccess.
Apa sih yang mau kita buat?
Oke, jika sudah saya akan memberitahu apa yang sebenarnya akan kita buat. Misal anda memiliki web dengan nama google.com nah anda memiliki file artikel.php yang isinya adalah artikel-artikel pada web anda. Jadi file anda pasti seperti ini, http://www.google.com/artikel.php?id=1
Nah misi kita sekarang adalah mengubah http://www.google.com/artikel.php?id=1 menjadi http://www.google.com/artikel/1, jika anda perhatikan susunannya maka artikel pada http://www.google.com/artikel/1 sebenarnya merupakan file bukan folder. Jadi itu sebuah file tanpa ekstensi php yang nanti dengan bantuan .htaccess kita buat agar server mengganggap itu file PHP.
Kenapa kita ubah seperti itu? selain url nya jadi lebih pendek, katanya orang-orang link seperti itu juga lebih Search Engine Friendly. Oke sekarang langsung saja kita mulai buat. Siapkan folder baru, terserah namanya apa saja diserver anda sebagai contoh foldernya "latihan" saja, isilah dengan file .htaccess dan buka file .htaccess nya isilah dengan kode berikut ini:
<FilesMatch "^artikel$">
ForceType application/x-httpd-php
</FilesMatch>
Oke, maksud dari kode diatas adalah, FileMatch berarti kita melakukan pencarian pada file artikel dengan Regular Expression. Dan jika file artikel ketemu maka kita memaksa server agar menganggap itu file PHP dengan perintah ForceType application/x-httpd-php.
Jika sudah, sekarang anda bisa membuat file artikel tok, tidak usah dikasih ekstensi, tidak usah dikasih titik, tidak usah dikasih embel-embel macam-macam. Oke sekarang pada file artikel tersebut isilah dengan kode berikut ini:
<?
echo "htaccess sukses"
?>
Oke, anda tahu kan itu kode PHP untuk apa? jika anda tidak tahu maka anda salah baca artikel, lebih baik anda belajar dasar PHP lebih dulu sebelum lanjut ke artikel ini. Oke sekarang jika anda mencobanya diserver komputer anda, silahkan pada browser anda jalankan http://localhost/latihan/artikel/1 atau jika sudah anda upload, jalankan http://www.google.com/latihan/artikel/1. Jika muncul tulisan "htaccess sukses", berarti file .htaccess anda telah benar dan berhasil dijalankan.
Mengambil URL pada browser
Jika pada url konvensional http://www.google.com/artikel.php?id=1 maka kita mendapatkan nilai variabel id=1. Nah nilai id ini kita proses didatabase sehingga kita mendapatkan isi artikel dengan id tersebut. Sekarang karena url kita sudah menjadi http://www.google.com/latihan/artikel/1, bagaimana caranya kita mendapatkan nilai 1 nya?
Pertama-tama tentu saja kita mengambil alamat dibrowser. PHP memiliki fungsi untuk mengambil alamat dibrowser yaitu $HTTP_SERVER_VARS['PATH_INFO'], hanya saja saya menemukan beberapa kasus bahwa fungsi tersebut tidak bisa berjalan dibeberapa server. Entah masalahnya versi Apache nya atau versi PHP nya saya tidak tahu. Karena itu kita menggunakan fungsi yang lebih baik dan lebih rumit :) Oke buka file artikel anda hapus kode yang tadi dan isilah dengan kode:
<?
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
?>
Jika anda tampilkan nilai $url maka nilanya adalah alamat url dibrowser anda, dalam hal ini nilainya adalah http://www.google.com/latihan/artikel/1. Sip kita sudah dapat link nya, sekarang bagaimana mendapatkan nilai 1 nya? tentu saja kita perlu memecahnya berdasarkan tanda "/" dengan fungsi explode. Oke tambahkan kode berikut ini:
<?
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$data = explode("/",$url);
?>
fungsi explode disini kita memecah string berdasarkan karakter "/" dan hasilnya kita simpan kedalam variabel $data dalam bentuk array. Jadi pada contoh diatas jika link anda http://localhost/latihan/artikel/1 dan anda jalankan kode diatas, maka anda akan mendapatkan nilai:
- $data[0] = http
- $data[1] = (kosong)
- $data[2] = localhost
- $data[3] = latihan
- $data[4] = artikel
- $data[5] = 1
$data[5]. Karena anda sudah dapat nilai id nya, maka anda tinggal memprosesnya kedalam database seperti biasa anda lakukan. Mudah kan? tapi perlu diingat jika didalam server kita yang tadi alamatnya: http://www.google.com/artikel/1 maka nilainya juga akan berbeda:
- $data[0] = http
- $data[1] = (kosong)
- $data[2] = www.google.com
- $data[3] = artikel
- $data[4] = 1
$data[4] yang nilainya 1, karena itu jangan lupa untuk merubahnya.
<img src="images/dodol.jpg" />. Ubahlah menjadi <img src="http://www.google.com/images/dodol.jpg" />
Mudah kan? bingung? pelajari lagi pelan-pelan. Contoh ini saya mengambil id nya, kalau web saya ini yang saya ambil judul artikelnya, kalau wordpress kalau tidak salah tanggalnya, jadi silahkan berkreasi dengan teknik ini.
Komentar [23]
Wah...
Ini postingan paling aku nantikan....
Makasih banget ya.... Thanks...
hmm.. bagus jg, saya cuma numpang liwat. Good job!. Walau mempersingkat url ga banyak bguna tapi jika dipadukan dengan enkripsi akan lebih baik lagi.
cuma ada koreksi sedikit:
Anda membuat url page anda seperti ini, sehingga link di rss feed jadi error.
ok thats all. keep your work going on bro!
Suhu....
cocok sekaleeeeeeeeeeeeeeeeeeeeemuantttttttttttttttttttttttttttttaaaaaaaaaaaaaaaaaaaappppppppppppppppp
pisan broooooooooooooooooooooooooooo
untungnya di wp bs milih tinggal klik mo pake url model mana aja.. 
secara pemula
maap tanya mas, ini engine situsnya nya pake apa ya..bikin sendiri?
salam,
http://daniiswara.net/
HLLO...Q MAU TAU CARANYA NYARI CODE URL GAMBAR???......GNI CERITANAYA ....KAN Q MAU MENGHIAS LAYOUT FRIENDSTER TP GAMBAR YG Q PILIH BUAT LAYOUT FRIENDSTER GAK ADA CODE URLNYA ...JD GMN DONK....????CARI KODE URLNYA GMANA YA????PLEASE BLAS DI EMAIL Q "FIDO.PREDATOR@YAHOO.CO.ID"PLEASE YA...KASIH TAU CARANAYA>>>>OK>>>SALAM KNAL..
@dani
Ya bikin sendiri, jadi jangan dibandingin ama Blogspot apalagi WP 
@FIDO.PREDATOR
Klik kanan gambarnya, properties, dapat deh link nya
Good job mas ronggo...
saya buat file .htaccess
isinya sbb :
ForceType application/x-httpd-php
dan saya sudah siapkan test.php kemudian saya access http://localhost/learn/test/coba, saya restart apache server tapi hasilnya Object not found!, kenapa ya? trims buat pertolongannya ;)
wah ternyata tidak usah dikasih ext ya, sudah dicoba dan berhasil, thx buat ilmunya
mantaaaaaaaaaaaaaaaaaap
mas kalau dengan joomla gimana bisa ngga di begitukan?
wah akhirnya ketemu juga.... tutorial yang saya cari selama ini!!
saya pernah mencoba dengan fungsi str-replace, tapi gagal!
ternyata ada cara seprti ini yah... makasih yah, wah langsung saya terapin neh!
mmm......
Maknyussss.........
Tutorialyang bermanfaat........
ajib
Saya mau edit web saya yang sudah online
secara online bisa. .....
tapi saya coba di localhost gak mau.....
saya menggunakan .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
gimana cara biar bisa di localhost.... mohon bantuannya................
Saya mau edit web saya yang sudah online
secara online bisa. .....
tapi saya coba di localhost gak mau.....
saya menggunakan .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
gimana cara biar bisa di localhost.... mohon bantuannya................
Thanks.... artikel-nya bagus banget dan sangat bermanfaat buat saya. Sudah ok dan berjalan dengan baik di web saya
thanks..........sangat bermanfaat
toooooooo long in dong gw dr pagi di coba ga bisa-bisa nih.....
baru ampe...
http://www.google.com/latihan/artikel/1
eh malah tampil
Not Found
The requested URL /new/profil/1 was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Sundul gan
terimah kasih mas artikelnya. oh ya mas bisa buat webiklan ngak klau bisa sms budi (085274279153) terimah kasih
mas, klo databasenya banyak gman??
contoh klo untuk e-commerce, yg ada hal adminnya??
coz sy lgi iseng2 bkin website e-commerce pke php mysql, n klo ngeliat url di addres bar kayanya jelek,,merusak pemandangan mata..
nah saya mohon tutornya...