Actions

URL Ramah Mesin Pencari

From Joomla! Documentation

This page is a translated version of a page Search Engine Friendly URLs and the translation is 100% complete.

Other languages: català 23% • ‎English 100% • ‎español 100% • ‎français 100% • ‎Bahasa Indonesia 100% • ‎日本語 57% • ‎Nederlands 100% • ‎Kiswahili 100%

Ramah Mesin Pencari (SEF), terbaca-manusia atau URL bersih adalah URL yang masuk akal baik untuk manusia maupun mesin pencari karena hal ini memaparkan dengan jelas jalur halaman yang dituju. Sejak versi 1.5 Joomla! telah mampu membuat dan menganalisa URL dengan berbagai format, termasuk URL SEF. Tidak bergantung lagi pada eksekusi tulis URL oleh server web, bahkan hal ini bekerja baik saat Joomla! menjalankan server selain Apache bersama modul mod_rewrite. URL SEF mengikuti pola tertentu, dimana pengguna bisa menentukan teks pendek yang menerangkan (alias) untuk masing-masing segmen URL.

Secara internal, bagian lokal URL SEF (bagian setelah nama domain) disebut rute. Adapun membuat dan memproses URL SEF berpedoman pada ruting, dan kode yang berhubungan dengannya disebut ruter.

Contoh ruting yang baik adalah URL ke artikel "Selamat Datang ke Joomla!" terdapat di dalam data contoh.

  • Tanpa menyalakan URL SEF, URLnya adalah sebagai berikut: http://www.domain_anda.com/index.php?option=com_content&view=article&id=1:selamat-datang-ke-joomla&catid=1:berita-terkini&Itemid=50
  • Dengan menyalakan URL SEF dan mod_rewrite padam, adalah sebagai berikut: http://www.domain_anda.com/index.php/berita/1-berita-terkini/1­-selamat-datang-ke­-joomla
  • Dengan menyalakan kedua URL SEF dan mod_rewrite, adalah sebagai berikut: http://www.domain_anda.com/berita/1­-berita-terkini/1-­selamat-datang-­ke­-joomla

URL ramah mesin pencari bisa diaktifkan dengan menyalakan opsi URL Ramah Mesin Pencari di Konfigurasi Global. Opsi ini menyala secara standar sejak Joomla! 1.6. Lihat Enabling Search Engine Friendly (SEF) URLs untuk informasi selengkapnya.

Contents

FAQ

Angka di dalam URL maksudnya apa?

Dengan membandingkan URL yang lama dengan yang baru kita bisa melihat angka di URL yang lama,

http://www.domain_anda.com/index.php?option=com_content&view=article&id=1:selamat-datang-ke-joomla&catid=1:berita-terkini&Itemid=50

juga di URL yang baru:

http://www.domain_anda.com/berita/1­-berita-terkini/1-selamat-datang-ke­-joomla

Angka-angka ini adalah parameter yang diperlukan Joomla! untuk mendapatkan URL internal dan menampilkan halaman yang ingin Anda lihat. (Dalam hal ini, angka yang pertama adalah ID kategori, angka yang kedua adalah ID artikel).

Sudah tidak ada lagi index.php di dalam URL. Bisakah saya menghapus berkasnya sekarang?

Jangan! URL mungkin tidak mengandung index.php lagi, tapi secara internal mod_rewirte mengalihkan jalur yang sebenarnya tanpa menampilkannya kepada Anda.

Apa itu nilai Alias? Dan bagaimana hal itu dibuat?

Alias terletak dibawah kolom Judul pada Artikel, Kategori, Bagian dan Butir Menu. Joomla! membuat alias secara otomatis untuk Anda. Alias otomatis dimulai dengan judul. Semua huruf besar digantikan dengan huruf kecil. Spasi dan karakter spesial tidak diizinkan di dalam URL; maka mereka diganti dengan tanda strip.

Saya ingin menentukan nilai Alias saya sendiri

Kalau Anda tidak menyukai alias yang disediakan Joomla!, Anda bisa memasukkan sebuah nilai alias yang Anda pilih ke dalam kolom tersebut. Banyak yang percaya bahwa dengan memakai kata kunci yang baik di dalam URL akan membantu optimisasi mesin pencari. Anda bisa melakukannya dengan memasukkan kata kunci tersebut ke dalam judul, dan membiarkan Joomla! membuatkan alias, atau membuat alias Anda sendiri.

Bagaimana Alias digunakan di dalam URL?

Untuk butir menu, Joomla! menggunakan alias sebagai URL. Asumsinya, Anda menggunakan opsi URL SEF yang pertama dari dua yang disebutkan diatas, dan Anda membuat sebuah butir menu yang dinamakan Produk. Maka URL Anda akan seperti domain_anda.com/produk.

Joomla! juga menggunakan nilai kunci primer data bersama URL untuk membantu navigasi ruter membenarkan halaman. Melanjutkan contoh sebelumnya, kalau butir menu produk Anda adalah Artikel/Kategori Blog, maka tautan untuk Judul Artikel dan/atau tautan Baca Selengkapnya akan terdiri dari tiga bagian:

  • URL butir menu - domain_anda.com/produk;
  • Ditambah, kunci primer Kategori dan alias Kategori - 32-buah;
  • Ditambah, kunci primer untuk Artikel dan alias Artikel - 1-apel;

Maka URL selengkapnya adalah: http://domain_anda.com/produk/32-buah/1-apel

Bagaimana cara saya untuk bisa menghapus angka-angka di dalam URL SEF?

Angka-angka di dalam URL SEF diperlukan oleh ruter Joomla! untuk mengetahui bagaimana mengalirkan arus situs. Saat logika ruter distabilkan, plugin sistem pihak ketiga yang sederhana bisa dikembangkan untuk menggandakan kemampuan ruter dengan mengizinkan beberap pilihan. Pada saat itu, angka-angka sepertinya dibuang dari URL.

Format Rute dan Mekanisme Ruting

Bagian ini menjelaskan mekanisme ruting inti Joomla! (bawaan). Ekstensi-ekstensi ruting mungkin bisa menggantikan cara rute dibuat pada sistem Anda.

Format Rute

Untuk menjelaskan mekanisme ruting Joomla! secara detail, pertama sekali kita perlu menekankan pada apa yang kita sebut rute. Kita anggap Joomla! telah dipasang di http://domain_anda.com/situs/pertama/. Jalur pemasangan biasanya mengacu pada URL dasar. Kemungkinan URLnya akan seperti http://domain_anda.com/situs/pertama/produk/32-buah/1-aple. Bagian pertama URL ini adalah URL dasar yang disebutkan sebelumnya., dan tidak ada ruter komponen lain atau bahkan Joomla! sendiri yang bisa membuat URL dengan bagian pertama yang lain. Bagian keduanya, produk/32-buah/1-apel, adalah rute, yang mengandung tiga segmen.

Segmen pertama rute adalah, untuk URL biasa, alias dari butir menu. URL SEF akan mengatakan rute melewati butir menu itu. Segmen yang lain ditentukan secara keseluruhan oleh ruter di komponen yang menyediakan tipe butir menu. Tipe butir menu Blog - Kategori, sebagai contoh, disediakan oleh komponen Content, oleh sebab itu ruter komponen bertanggungjawab untuk membangun dan menganalisa segmen-segmen berikutnya.

Dimungkinkan juga (bagi ekstensi) untuk menanyakan sistem agar membuat sebuah rute tanpa menyediakan sebuah butir menu untuk dilewati. Dalam hal ini, sistem biasanya akan menentukan untuk membuat rute khusus yang mengandung kata-kata component pada segmen pertamanya. Rute ini dibuat menggunakan format tertentu: nama komponen (tanpa diawali com_) yang dipilih sebagai segmen kedua dan sembarang parameter untuk segmen yang lainnya.

Batasan

Adalah penting untuk diingat, membuat sebuah butir menu adalah satu-satunya cara bagi pengguna Joomla! untuk menentukan rute yang akan mengarah ke komponen tertentu. Walaupun, adalah mungkin membuat rute tanpa menampilkannya di situs (di menu). Cara yang sering diterapkan adalah membuat sebuah butir menu di dalam sebuah menu yang tidak ditampilkan dimanapun. Seperti menu yang biasanya disebut menu tersembunyi.

Paragraf sebelumnya menunjukkan bawah adalah tidak mungkin membuat satu komponen yang bertanggungjawab mengendalikan seluruh rute. Sebagai contoh, adalah tidak mungkin menentukan URL http://domain_anda.com/alias harus menampilkan butir Konten dengan alias alias, dimana alias bisa berarti kata apa saja. Kalau hal ini perlu dilakukan untuk jumlah artikel yang sedikit, butir menu bisa dibuat secara manual. Diluar itu, ruting ekstensi adalah wajib.

Mekanisme ruting ini meskipun tidak sefleksibel pengguna tapi kadang perlu. Dengan kata lain, hal ini punya keuntungan yang besar: mengurangi kesempatan rute yang tidak jelas (rute yang bisa mengarah ke dua halaman yang berbeda). Karena segmen pertama rute selalu sebuah alias butir menu, sistem akan mengetahui ruter komponen mana yang harus dianalisa dengan cepat.

Detail Implementasi

Kendali Rute

Bagian ini menjelaskan implementasi ruting. Kalau Anda seorang pengembang komponen, lihat Supporting SEF URLs in your component.

Rute Joomla dibuat dan dipecahkan oleh kelas JRouter. Kelas ini terlihat di pangkal komponen dari komponen yang aktif saat ini (secara khusus ada di parameter opsi di query string) dan termasuk berkas router.php di pangkal direktori komponen. Hal ini kemudian memanggil satu dari dua fungsi: satu untuk membuat URL SEF dan satunya unuk mengartikan URL SEF.

Kelas JRouter digantikan oleh Joomla CMS di /includes/router.php. Dalam berkas ini pembuatan dan analisa fungsinya digantikan untuk secara baik membangun dan menganalisa URL untuk Joomla CMS.

Berkas router.php dimasing-masing komponen (sebagai contoh, /components/com_content/router.php) harus mengandung dua fungsi berikut ini:

  • ContentBuildRoute - ini membangun URL SEF
    • Parameter
      • $query - ini adalah nama larik yang mengandung variabel querystring.
    • Mengembalikan: sebuah larik segmen dimana masing-masing segmen dipisahkan oleh tanda '/' saat nanti digabungkan untuk membuat URL sebenarnya (butir di dalam larik harus mengandung karakter '/').
  • ContentParseRoute - ini mengartikan sebuah URL SEF
    • Parameter
      • $segments - ini adalah larik yang mengandung segemn URL yang diminta.
    • Mengembalikan: sebuah nama => nilai larik variable querystring yang menautkan peta.

Plugin SEF

Plugin Sistem - SEF Joomla mewarisi JPlugin dan mengimplementasikan fungsi onAfterRender(). Dalam fungsi ini respon body akan dikirimkan ke peramban yang dikembalikan dengan JResponse::getBody(). Respon body kemudian dicarikan tautan yang mengandung /index.php... dan menggantikannya dengan URL SEF yang benar dengan memanggil JRoute::_(url).

JRoute membangun URL SEF dengan memberi contoh obyek JRouter kemudian memintanya membangun tautan yang benar dari yang dilewatkan di URL.

Kendali URL SEF

Secara standar URL SEF dikendalikan oleh obyek JRouterSite (dari /includes/router.php) dan dipanggil dengan memanggil JApplication::route() dari index.php. Panggilan ini dibuat pada variabel $app yang sebenarnya adalah contoh JSite (dari /includes/application.php).

JApplication::route() punya hasil yang tidak menghancurkan pada larik $_GET. Oleh karena itu, JApplication::route() mengatur variabel di $_GET dengan memanggil JRequest::set() dengan menghapus bendera dan mengaturnya ke false. Kalau nama variabel dikembalikan dari JRouter::route() yang sudah ada di $_GET, maka tidak akan menempatkan nilai tersebut ke dalam $_GET. Ini mengizinkan ruting kustom.

Ruting Kustom

Joomla mengizinkan Anda membuat mekanisme ruting Anda sendiri. Untuk membuat mekanisme ini Anda harus memiliki plugin yang menggantikan fungsi JPlugin::onAfterInitialise(). Fungsi ini kemudian akan menganalisa URL dan membuat variabel-variabel yang diperlukan di dalam $_GET sebelum standar ruting Joomla selesai dilakukan.

Lihat Creating a System Plugin to augment JRouter sebagai contohnya.