AngularJS SEO Sorunu Nedir, Nasıl Çözülür?
Birçok kişi tek sayfa uygulamalarının SEO konusunda farklı sıkıntılar çıkarttığını biliyor.
Genellikle bu türdeki uygulamalar karşımıza sayfayı yenilemeden içeriğin değiştirilmesi sonrasında oluşan uygulamalar olarak çıkıyor. Herhangi bir projeye başladığında ilk olarak eğer hareketli bir sistem olacaksa ona uygun javascript kütüphanesinin tercih edilmesi gerekiyor. Normal şartlarda Google ilk aşamada sayfanın içeriğini göremiyor bu nedenle ilk olarak bu konunun çözülmesi gerekiyor.
Google, sitelerdeki javascriptlerini çalıştırdıktan sonra gösteriyor ama bunun da bazı şartları bulunuyor. Örneğin bu durumda sayfaların başına meta tagını kullanmanız gerekiyor. URL yapılarının tamamı AngularJS'de www.deneme.com/# şeklinde gözükür. Google ise meta tagını gördüğünde yapıyı www.deneme.com/?_escaped_fragment_=sayfa şekline sokarak indekslemeye başlıyor. Sistemin çalışmasında buraya kadar herhangi bir sıkıntı yok ancak Google botları çoğu zaman kısa sürede siteden ayrılabiliyor. Ya da tüm sayfalara indeksleme yapamayabiliyor. Bu sorunu çözmek için AngularJS'de HTML 5 modunun açılması gerekiyor. Bu işlemi de ancak $locationProvider ile yapabilirsiniz.
Phantomjs'yi Kurtarıcı Olarak Görebilirsiniz
Bilindiği gibi Javascript api ile çalışır. Her ne kadar testler için kullanılsa da prerender için de kullanılabilir. İlk olarak Phantomjs'nin ve ilgili scriptin indirilmesi gerekiyor. Script sayesinde önce webserver oluşturulur, sonrasında ise internet sayfası oluşturulur. Özetle PHP'deki derleme işlemine benzer bir işlem yapılmış oluyor. Bu işlemi Google botlarına yönlendirmek için ise nginx reserve proxy kullanılması gerekiyor. Elbette Phantomjs'nin çalıştırılmasının ardından nginx.conf dosyasının da düzenlenmesi şarttır.
Phantomjs Arka Planda Nasıl Çalışır?
Unix için Phantomjs'un arka planda çalışmasını sağlamak için nohup kullanılabilir. Bu script sayesinde arka planda çalıştırabilirsiniz. Aşağıda bu konuda çalıştırılması gereken örnek kodu görebilirsiniz. Bu kod çalıştırıldığında terminalde arka planda Phantomjs çalışmaya başlayacaktır.
<nohup phantomjs –disk-cache=no script.js 9000 http://deneme.com 2>/dev/null &