Membuat Dinamic Base URL dan Clean URL pada CodeIgniter 3.X

Di tulisan ini saya akan berbagi cara membuat Base URL yang bersih dan dinamis pada CodeIgniter 3.X.

Berikut penjelasannya:

1.Setting Dinamic Base URL

Secara umum, kita harus membuat base url secara manual seperti contoh:

$config['base_url']=http://localhost/namaproject;

. Namun, dengan Base URL yang dinamis akan memudahkan kita untuk tidak setting secara manual alias otomatis. :) Caranya teman-teman membuka root

application/config/config.php

. Lalu gantilah kode

$config['base_url']

seperti di bawah ini:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

Penafsiran dari kode-kode diatas menurut penulis sebagai berikut: 1. Pada kode pertama akan ditanya apakah protokolnya menggunakan http atau https? Jika https maka gunakan https, jika tidak maka gunakan http. 2. Pada kode kedua, hasil dari kode pertama akan ditempelkan dengan jenis host nya seperti https://http_host atau http://http_host. Http_host itu mirip localhost atau host server seperti Apache, Nginx atau LiteSpeed. 3. Pada kode ketiga, hasil dari kode pertama dan kedua akan ditempel pada kode ketiga. Seperti https://http_host/script_name atau http://http_host/script_name.

2. Setting Clean URL

Secara umum, ketika menjalankan program dengan CodeIgniter di browser, maka kita harus mengetik ini di URL kita seperti di bawah ini:

http://localhost/namaproject/index.php/namacontroller/namamethod

. Untuk menghilangkan index.php tersebut, maka kita harus menghilangkan kode yang semula

$config['index_page']='index.php';

menjadi

$config['index_page']='';

Kemudian kita membuat file .htaccess di root project kita (saya harap teman-teman sudah mengenal htaccess dan sudah disediakan di SekolahKoding). Berikut kode .httaccess nya:

<IfModule mod_rewrite.c>
  Options -Indexes

  RewriteEngine On
  RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.+)$ index.php?/$1 [L,QSA]
</IfModule>

Yap, itulah cara pembuatannya. Jika teman-teman bingung bisa lihat di github saya dan saya sudah mengimplementasikan hasilnya pada repo bernama agenda di github saya serta telah berhasil menghosting nya di <a href='agenda.satyakresna.com'>agenda.satyakresna.com</a>.

Semoga menambah semangat teman-teman dan bermanfaat.

avatar satyakresna
@satyakresna

82 Kontribusi 55 Poin

Diperbarui 3 tahun yang lalu

Tanggapan

Kalau untuk setting url berbeda di env production dan development bagaimana? jadi pas deploy otomatis misal menggunakan pipeline bitbucket kita ga harus ngubah2 file config lagi jd versi developemn dan versi production selalu singkron

11 Jawaban:

terima kasih tutorialnya!

avatar hilmanski
@hilmanski

2686 Kontribusi 2135 Poin

Dipost 8 tahun yang lalu

Sama - sama mas Hilman. Doakan semoga saya mendapat inspirasi membuat tutorial di SekolahKoding!

avatar satyakresna
@satyakresna

82 Kontribusi 55 Poin

Dipost 8 tahun yang lalu

kalo ane sering pindah-pindah port gimana gan biar otomatis localhost-nya?

avatar ilhamdsofyan
@ilhamdsofyan

25 Kontribusi 3 Poin

Dipost 8 tahun yang lalu

@ilhamdsofyan, kalau pindah-pindah port saya belum menemukan solusi yang terbaik. Solusi saat ini disetup manual mas.

avatar satyakresna
@satyakresna

82 Kontribusi 55 Poin

Dipost 8 tahun yang lalu

Untuk versi NGiNX, ada ga tutornya? Thx before, btw nice tutor... Thumbs Up! b

avatar nurimansyah
@nurimansyah

98 Kontribusi 87 Poin

Dipost 8 tahun yang lalu

Hai @nurimansyah, untuk jawabannya bisa dicari di sini ya: http://avenir.ro/codeigniter-tutorials/step-2-set-environments/

avatar satyakresna
@satyakresna

82 Kontribusi 55 Poin

Dipost 8 tahun yang lalu

Kang, mau tanya kalo settingan base_url ketika project publish ke server bagaimana, soalnya ketika saya setting base_url: http://localhost/namaproject maka akan error ketika ditaro di server

avatar Mochammad
@Mochammad

7 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Halo @Mochammad, config di atas otomatis sudah mendeteksi url yg deploy ke production. Trims.

avatar satyakresna
@satyakresna

82 Kontribusi 55 Poin

Dipost 6 tahun yang lalu

ane masih belum berhasil nih

avatar RioPambudi
@RioPambudi

2 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

gan, saya kan punya induk domainya misanlya https://sepa.sch.id, nah sekarang saya sudah menambahkan domain: https://ppdb.sepa.sch.id direktori root public_html/ppdb pertanyaan: di file config (CI) seperti ini: $url = "http://". $_SERVER['HTTP_HOST']; $url .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']); $config['base_url'] = $url;

tetapi aksesnya not found, apa yang salah yak...

avatar miyanto
@miyanto

1 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

<div>mantap sangat membantu. ini yang saya cari.</div>

avatar rgibranz
@rgibranz

2 Kontribusi 1 Poin

Dipost 3 tahun yang lalu

Login untuk ikut Jawaban