Showing posts with label server. Show all posts
Showing posts with label server. Show all posts

All in 1 Rewrite URL htaccess

Kali ini saya akan berbagi trik untuk Rewrite URL .htaccess yang dapat digunakan untuk bermacam-macam fungsi.
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=budi
menjadi
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'];
$query = explode('/', $query);
if(count($query) > 3) { header('Location: http://domain.com'); exit; }
dari sini kita mendapatkan $query[1] = 1 dan $query[2] = budi
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=test
menjadi
http://domain.com/search?q=test

kita tambahkan fungsi berikut ke file index.php
if($_SERVER['REDIRECT_URL'] == '/search') {
$q = $_GET['q'];
}
atau bisa juga seperti ini
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/search
atau
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.html
tapi 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.txt
tapi 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.jpg
sumbernya 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.html
ada, maka yang dibuka di browser adalah file latihan.html bukan latihan.php meski sudah kita atur handlingnya di index.php

Konfigurasi virtual host untuk localhost menggunakan uniform server

Kali ini saya share mengenai virtual host pada local komputer.
Manfaat dari virtual host ini, kita bisa membuat beberapa localhost hanya dengan 1 (satu) local server. Misal kita memiliki beberapa project yang masing2 harus dijalankan di root folder host maka kita tidak akan kesulitan lagi dengan adanya virtual host.
Langsung saja, disini saya share cara membuat virtual host menggunakan Uniform Server.
Kenapa menggunakan Uniform Server? Karena menunya udah ada, kita tinggal klik aja gak perlu repot-repot edit file konfigurasi yang bikin pusing (terutama bagi para newbie) :)

Bagi yang belum punya silakan download dulu di http://www.uniformserver.com, filenya berupa self-extracting archives (bukan installer).
Setelah download, buka filenya dan pilih folder extract nya, terserah mau di taruh di mana gak harus di disk C.

Jalankan file Start_as_program, dan akan terbuka jendela server program seperti ini
image
kalau gambarnya kekecilan silakan klik gambarnya untuk melihat dalam ukuran besar.

Klik Server Configuration pada server program, dan akan terbuka jendela server configuration, kemudian klik Apache dan akan muncul drop down menu seperti di bawah ini
image

Klik Apache Vhosts
image
  • Document Root isi dengan folder dimana nanti file localhost nya akan disimpan (untuk setiap virtual host harus memiliki document root masing-masing supaya tidak bentrok)
  • Server Name isi dengan nama servernya misal: localhost2 atau nama yang lain yang nanti dipake sebagai domain local host. Kalau namanya diisi localhost2 nanti dia akan memiliki alamat http://localhost2/
  • Klik Confirm akan muncul jendela semacam ini
    image
    Kemudian klik Create Vhost
Kalau muncul error ketika klik Create Vhost semacam ini
image
berarti script yang untuk membuat virtual host diblokir oleh antivirus atau semacamnya.
Kalau ini terjadi, matikan dulu antivirusnya sebelum membuat vhost dan aktifkan kembali jika sudah selesai.

Selanjutnya jika vhostnya sudah jadi, kita tinggal klik Start Both untuk menjalankan Apache dan MySQL.
Atau jika ingin servernya otomatis jalan ketika start up windos, buka file Start_as_service kemudian klik Install/Run Apache and MySQL Service. Selanjutnya server akan berjalan tiap komputer dinyalakan.