Gunakan PushState dan Precomposition
Cara saat ini (2015) untuk melakukan ini adalah menggunakan metode JavaScript pushState.
PushState mengubah URL di bilah browser atas tanpa memuat ulang halaman. Katakanlah Anda memiliki halaman yang berisi tab. Tab menyembunyikan dan menampilkan konten, dan konten dimasukkan secara dinamis, baik menggunakan AJAX atau hanya dengan mengatur tampilan: tidak ada dan menampilkan: blokir untuk menyembunyikan dan menampilkan konten tab yang benar.
Ketika tab diklik, gunakan pushState untuk memperbarui url di bilah alamat. Saat halaman diberikan, gunakan nilai di bilah alamat untuk menentukan tab mana yang akan ditampilkan. Perutean sudut akan melakukan ini untuk Anda secara otomatis.
Prekomposisi
Ada dua cara untuk menekan Aplikasi Halaman Tunggal PushState (SPA)
- Melalui PushState, di mana pengguna mengklik tautan PushState dan kontennya adalah AJAX.
- Dengan menekan URL secara langsung.
Hit awal di situs akan melibatkan pemukulan URL secara langsung. Hit berikutnya hanya akan AJAX dalam konten sebagai PushState memperbarui URL.
Crawler memanen tautan dari sebuah halaman kemudian menambahkannya ke antrian untuk diproses lebih lanjut. Ini berarti bahwa untuk perayap, setiap klik di server adalah klik langsung, mereka tidak menavigasi melalui Pushstate.
Precomposition bundel muatan awal menjadi respons pertama dari server, mungkin sebagai objek JSON. Ini memungkinkan Mesin Pencari untuk merender halaman tanpa mengeksekusi panggilan AJAX.
Ada beberapa bukti yang menunjukkan bahwa Google mungkin tidak menjalankan permintaan AJAX. Lebih lanjut tentang ini di sini:
https://web.archive.org/web/20160318211223/http://www.analog-ni.co/precomposing-a-spa-may-become-the-holy-grail-to-seo
Mesin Pencari dapat membaca dan menjalankan JavaScript
Google telah dapat mem-parsing JavaScript untuk beberapa waktu sekarang, itu sebabnya mereka awalnya mengembangkan Chrome, untuk bertindak sebagai browser tanpa kepala berfitur lengkap untuk spider Google. Jika tautan memiliki atribut href yang valid, URL baru dapat diindeks. Tidak ada lagi yang harus dilakukan.
Jika mengklik tautan sebagai tambahan memicu panggilan pushState, situs dapat dinavigasi oleh pengguna melalui PushState.
Dukungan Mesin Pencari untuk URL PushState
PushState saat ini didukung oleh Google dan Bing.
Google
Berikut Matt Cutts menanggapi pertanyaan Paul Irish tentang PushState untuk SEO:
http://youtu.be/yiAF9VdvRPw
Ini Google yang mengumumkan dukungan penuh JavaScript untuk laba-laba:
http://googlewebmastercentral.blogspot.de/2014/05/understanding-web-pages-better.html
Hasilnya adalah bahwa Google mendukung PushState dan akan mengindeks URL PushState.
Lihat juga alat Google webmaster sebagai Googlebot. Anda akan melihat JavaScript Anda (termasuk Angular) dieksekusi.
Bing
Berikut ini pengumuman dukungan Bing untuk URL PushState cantik bertanggal Maret 2013:
http://blogs.bing.com/webmaster/2013/03/21/search-engine-optimization-best-practices-for-ajax-urls/
Jangan gunakan HashBangs #!
URL Hashbang adalah pengganti sementara jelek yang mengharuskan pengembang untuk menyediakan versi situs yang dirender sebelumnya di lokasi khusus. Mereka masih berfungsi, tetapi Anda tidak perlu menggunakannya.
URL Hashbang terlihat seperti ini:
domain.com/#!path/to/resource
Ini akan dipasangkan dengan metatag seperti ini:
<meta name="fragment" content="!">
Google tidak akan mengindeks mereka dalam formulir ini, tetapi sebaliknya akan menarik versi statis situs dari URL _escaped_fragments_ dan mengindeksnya.
URL pushstate terlihat seperti URL biasa:
domain.com/path/to/resource
Perbedaannya adalah bahwa Angular menanganinya untuk Anda dengan mencegat perubahan ke document.location menghadapinya dalam JavaScript.
Jika Anda ingin menggunakan URL PushState (dan mungkin Anda lakukan), keluarkan semua URL gaya lama dan metatag dan cukup aktifkan mode HTML5 di blok konfigurasi Anda.
Menguji situs Anda
Alat Google Webmaster sekarang berisi alat yang akan memungkinkan Anda untuk mengambil URL sebagai google, dan merender JavaScript saat Google membuatnya.
https://www.google.com/webmasters/tools/googlebot-fetch
Menghasilkan URL PushState di Angular
Untuk menghasilkan URL nyata di Angular, bukan # yang diawali, setel mode HTML5 pada objek $ locationProvider Anda.
$locationProvider.html5Mode(true);
Sisi server
Karena Anda menggunakan URL sungguhan, Anda harus memastikan templat yang sama (ditambah beberapa konten yang sudah dikomposisi sebelumnya) dikirimkan oleh server Anda untuk semua URL yang valid. Cara Anda melakukannya bervariasi tergantung pada arsitektur server Anda.
Peta Situs
Aplikasi Anda dapat menggunakan bentuk navigasi yang tidak biasa, misalnya melayang atau gulir. Untuk memastikan Google dapat mendorong aplikasi Anda, saya mungkin menyarankan untuk membuat peta situs, daftar sederhana semua url yang ditanggapi aplikasi Anda. Anda dapat menempatkan ini di lokasi default (/ sitemap atau /sitemap.xml), atau memberi tahu Google tentang hal itu menggunakan alat webmaster.
Lagipula itu ide yang bagus untuk memiliki sitemap.
Dukungan browser
Pushstate berfungsi di IE10. Di browser yang lebih lama, Angular akan secara otomatis kembali ke URL gaya hash
Halaman demo
Konten berikut ini dirender menggunakan URL pushstate dengan prasyarat:
http://html5.gingerhost.com/london
Seperti yang dapat diverifikasi, pada tautan ini , konten diindeks dan muncul di Google.
Melayani 404 dan 301 kode status Header
Karena mesin pencari akan selalu menekan server Anda untuk setiap permintaan, Anda dapat menayangkan kode status tajuk dari server Anda dan mengharapkan Google melihatnya.