ใช้ PushState และคำบุพบท
วิธีปัจจุบัน (2015) ในการทำเช่นนี้คือการใช้วิธี JavaScript pushState
PushState เปลี่ยน URL ในแถบเบราว์เซอร์บนสุดโดยไม่ต้องโหลดหน้าซ้ำ สมมติว่าคุณมีหน้าที่มีแท็บ แท็บซ่อนและแสดงเนื้อหาและเนื้อหาถูกแทรกแบบไดนามิกโดยใช้ AJAX หรือเพียงแค่ตั้งค่าการแสดงผล: none และ display: block เพื่อซ่อนและแสดงเนื้อหาของแท็บที่ถูกต้อง
เมื่อคลิกแท็บแล้วให้ใช้ pushState เพื่ออัปเดต URL ในแถบที่อยู่ เมื่อมีการแสดงผลหน้าให้ใช้ค่าในแถบที่อยู่เพื่อกำหนดแท็บที่จะแสดง การกำหนดเส้นทางเชิงมุมจะทำสิ่งนี้ให้คุณโดยอัตโนมัติ
Precomposition
มีสองวิธีในการกดแอป PushState หน้าเดียว (SPA)
- ผ่าน PushState ที่ผู้ใช้คลิกลิงก์ PushState และเนื้อหานั้น AJAXed
- โดยกดปุ่ม URL โดยตรง
การเข้าชมครั้งแรกบนไซต์จะเกี่ยวข้องกับการกดปุ่ม URL โดยตรง Hit ที่ตามมาจะเป็นเพียง AJAX ในเนื้อหาในขณะที่ PushState อัพเดต URL
ซอฟต์แวร์รวบรวมข้อมูลรวบรวมลิงค์จากหน้าเว็บจากนั้นเพิ่มลงในคิวเพื่อประมวลผลในภายหลัง ซึ่งหมายความว่าสำหรับโปรแกรมรวบรวมข้อมูลทุกการโจมตีบนเซิร์ฟเวอร์เป็นการโจมตีโดยตรงพวกเขาไม่ได้นำทางผ่าน Pushstate
คำบุพบทรวมชุดเพย์โหลดเริ่มต้นไว้ในการตอบกลับครั้งแรกจากเซิร์ฟเวอร์ซึ่งอาจเป็นวัตถุ JSON สิ่งนี้ทำให้ Search Engine แสดงผลหน้าเว็บโดยไม่ต้องเรียกใช้ AJAX
มีหลักฐานบางอย่างที่ชี้ให้เห็นว่า Google อาจไม่ดำเนินการตามคำขอ AJAX เพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่:
https://web.archive.org/web/20160318211223/http://www.analog-ni.co/precomposing-a-spa-may-become-the-holy-grail-to-seo
เครื่องมือค้นหาสามารถอ่านและใช้งาน JavaScript
Google สามารถแยกวิเคราะห์ JavaScript ได้ในขณะนี้เป็นสาเหตุที่พวกเขาได้พัฒนา Chrome ตั้งแต่แรกเพื่อทำหน้าที่เป็นเบราว์เซอร์ที่ไม่มีส่วนหัวที่สมบูรณ์สำหรับ Google spider หากลิงก์มีแอตทริบิวต์ href ที่ถูกต้องสามารถสร้างดัชนี URL ใหม่ได้ ไม่มีอะไรให้ทำอีกแล้ว
หากการคลิกลิงก์เพิ่มเติมจะทริกเกอร์การโทร pushState ผู้ใช้สามารถสำรวจไซต์ผ่านทาง PushState
การสนับสนุนเครื่องมือค้นหาสำหรับ URL PushState
ปัจจุบัน PushState รองรับโดย Google และ Bing
Google
ที่นี่ Matt Cutts ตอบสนองต่อคำถามของ Paul Irish เกี่ยวกับ PushState สำหรับ SEO:
http://youtu.be/yiAF9VdvRPw
นี่คือ Google ประกาศสนับสนุน JavaScript แบบเต็มรูปแบบสำหรับแมงมุม:
http://googlewebmastercentral.blogspot.de/2014/05/understanding-web-pages-better.html
ผลที่สุดคือ Google รองรับ PushState และจะจัดทำดัชนี PushState URL
ดูการดึงข้อมูลเครื่องมือผู้ดูแลเว็บของ Google เช่น Googlebot คุณจะเห็น JavaScript ของคุณ (รวมถึง Angular) ถูกใช้งาน
Bing
นี่คือการประกาศการสนับสนุนของ Bing สำหรับ URL PushState ที่สวยลงวันที่มีนาคม 2013:
http://blogs.bing.com/webmaster/2013/03/21/search-engine-optimization-best-practices-for-ajax-urls/
อย่าใช้ HashBangs #!
URL ของ Hashbang นั้นเป็นจุดเปลี่ยนที่น่าเกลียดซึ่งผู้พัฒนาต้องการให้มีการแสดงผลเว็บไซต์ในรูปแบบที่แสดงล่วงหน้าในสถานที่พิเศษ มันยังใช้ได้ แต่คุณไม่จำเป็นต้องใช้มัน
Hashbang URL มีลักษณะดังนี้:
domain.com/#!path/to/resource
นี่จะถูกจับคู่กับเมตาแท็กเช่นนี้:
<meta name="fragment" content="!">
Google จะไม่จัดทำดัชนีพวกเขาในรูปแบบนี้ แต่จะดึงรุ่นคงที่ของเว็บไซต์จาก _escaped_fragments_ URL และดัชนีนั้น
Pushstate URL ดูเหมือน URL ทั่วไป:
domain.com/path/to/resource
ข้อแตกต่างคือ Angular จัดการกับคุณโดยการดักจับการเปลี่ยนแปลงของ document.location ที่เกี่ยวข้องกับ JavaScript
หากคุณต้องการใช้ PushState URL (และคุณอาจทำได้) นำ URL สไตล์แฮชเก่าและเมตาแท็กทั้งหมดออกและเปิดใช้งานโหมด HTML5 ในบล็อกการกำหนดค่าของคุณ
ทดสอบเว็บไซต์ของคุณ
ตอนนี้เครื่องมือ Google Webmaster ประกอบด้วยเครื่องมือที่จะช่วยให้คุณสามารถดึง URL เป็น google และแสดง JavaScript เมื่อ Google แสดงผล
https://www.google.com/webmasters/tools/googlebot-fetch
การสร้าง URL PushState ในเชิงมุม
หากต้องการสร้าง URL จริงใน Angular แทนที่จะเป็น # นำหน้าให้ตั้งค่าโหมด HTML5 ในวัตถุ $ locationProvider ของคุณ
$locationProvider.html5Mode(true);
ฝั่งเซิร์ฟเวอร์
เนื่องจากคุณใช้ URL จริงคุณจะต้องให้แน่ใจว่าเทมเพลตเดียวกัน (รวมถึงเนื้อหาบางส่วนที่ถูกคอมไพล์) ได้รับจากเซิร์ฟเวอร์ของคุณสำหรับ URL ที่ถูกต้องทั้งหมด วิธีการทำเช่นนี้จะแตกต่างกันไปขึ้นอยู่กับสถาปัตยกรรมเซิร์ฟเวอร์ของคุณ
แผนผังเว็บไซต์
แอปของคุณอาจใช้รูปแบบการนำทางที่ผิดปกติเช่นเลื่อนหรือเลื่อน เพื่อให้แน่ใจว่า Google สามารถขับเคลื่อนแอปของคุณได้ฉันอาจขอแนะนำให้สร้างแผนผังไซต์ซึ่งเป็นรายการง่ายๆของ URL ทั้งหมดที่แอปของคุณตอบกลับ คุณสามารถวางสิ่งนี้ไว้ที่ตำแหน่งเริ่มต้น (/ sitemap หรือ /sitemap.xml) หรือบอก Google เกี่ยวกับสิ่งนี้โดยใช้เครื่องมือเว็บมาสเตอร์
เป็นความคิดที่ดีที่จะมีแผนผังเว็บไซต์อยู่ดี
รองรับเบราว์เซอร์
Pushstate ทำงานได้ใน IE10 ในเบราว์เซอร์รุ่นเก่า Angular จะย้อนกลับไปที่ URL สไตล์แฮชโดยอัตโนมัติ
หน้าตัวอย่าง
เนื้อหาต่อไปนี้แสดงผลโดยใช้ URL ของรัฐที่มีคำนำหน้า:
http://html5.gingerhost.com/london
สามารถตรวจสอบได้ที่ลิงค์นี้เนื้อหาถูกจัดทำดัชนีและปรากฏใน Google
การแสดงรหัสสถานะ 404 และ 301 ส่วนหัว
เนื่องจากเครื่องมือค้นหาจะโจมตีเซิร์ฟเวอร์ของคุณทุกคำขอคุณสามารถให้รหัสสถานะส่วนหัวจากเซิร์ฟเวอร์ของคุณและคาดหวังให้ Google เห็นพวกเขา