anda mungkin pernah menggunakan .htaccess berikut ini
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
dan mungkin rewrite rule tersebut masih anda tambah lagi dengan rewrite rule yang lain yang sebenarnya tidak dibutuhkan lagi jika anda sudah menggunakan rule yang di atas itu.
Dengan htaccess tersebut di atas, anda dapat membuat bermacam kombinasi permalink dan bermacam handling.
Kuncinya semua handling dan permalink diatur dari file index.php
Berikut ini saya berikan beberapa contoh permalink dan handling.
1. Permalink menyerupai folder
Anda ingin URL semacam
http://domain.com/?id=1&name=budimenjadi
http://domain.com/1/budi
anda tidak perlu lagi menambahkan rule ke .htaccess, anda cukup menambahkan fungsi di index.php dan merubah sedikit skrip yang menghandle query string id=1&name=budi karena sekarang sudah tidak bisa lagi menggunakan $_GET
Lalu bagaimana cara mendapatkan value id = 1 dan name = budi?
kita bisa menggunakan
$_SERVER['REQUEST_URI']atau
$_SERVER['REDIRECT_URL']
caranya di file index.php tambahkan fungsi ini
$query = $_SERVER['REDIRECT_URL'];dari sini kita mendapatkan $query[1] = 1 dan $query[2] = budi
$query = explode('/', $query);
if(count($query) > 3) { header('Location: http://domain.com'); exit; }
perubahan yang harus kita lakukan:
misal semula kita menggunakan $id = $_GET['id']; sekarang kita ganti $id = $query[1];
dan $name = $_GET['name']; kita ganti $name = $query[2]; baris yang if(count($query) > 3) { header('Location: http://domain.com'); exit; } kita gunakan sebagai pengaman kalau ada visitor yang iseng menambahkan folder yang panjang di URL
2. Rewrite URL search seperti search engine
URL
http://domain.com/search.php?q=testmenjadi
http://domain.com/search?q=test
kita tambahkan fungsi berikut ke file index.php
if($_SERVER['REDIRECT_URL'] == '/search') {atau bisa juga seperti ini
$q = $_GET['q'];
}
if($_SERVER['REDIRECT_URL'] == '/search') {
include('search.php');
}
Untuk rewrite yang jenis ini kita masih dapat menggunakan $_GET untuk mendapatkan value dari query string.
fungsi if di atas hanya digunakan untuk menghandle jika URL nya
http://domain.com/searchatau
http://domain.com/search?q=test
3. Menghandle extension yang bukan .php
Anda ingin file php anda bisa dibuka pakai extension lain misal .html atau .txt
kita tinggal menambahkan fungsinya di index.php contoh URL nya
http://domain.com/latihan.htmltapi berjalan sebagai php dan URL aslinya adalah
http://domain.com/latihan.php
if($_SERVER['REDIRECT_URL'] == '/latihan.html') {
include('latihan.php'); exit;
}
atau URL nya
http://domain.com/latihan.txttapi berjalan sebagai php dan URL aslinya adalah
http://domain.com/latihan.php
if($_SERVER['REDIRECT_URL'] == '/latihan.txt') {
include('latihan.php'); exit;
}
Anda ingin gambar dari website lain tapi URL nya pakai domain anda
http://domain.com/image.jpgsumbernya dari
http://domainlain.com/image.jpg
if($_SERVER['REDIRECT_URL'] == '/image.jpg') {
header('Content-Type: image/jpeg');
$img = file_get_contents('http://domainlain.com/image.jpg');
echo $img; exit; }
Untuk jenis permalink atau handling yang lain silakan coba-coba sendiri. Untuk menghandle extension anda mungkin harus menambahkan header content-type sesuai MIME type masing-masing.
Catatan:
Trik ini tidak akan berjalan jika ada file aslinya
misal seperti contoh di atas jika file
http://domain.com/latihan.htmlada, maka yang dibuka di browser adalah file latihan.html bukan latihan.php meski sudah kita atur handlingnya di index.php
No comments:
New comments are not allowed.