SEO basics for Rails developers

Tối ưu hóa công cụ tìm kiếm (SEO) là quá trình tối ưu trang web của bạn, mục đích chính của nó là làm cho trang web của bạn đạt được kết quả cao trong việc tìm kiếm từ các công cụ tìm kiếm (chẳng hạn như google). Có rất nhiều cách, thủ thuật và mẹo có thể được áp dụng để cải thiện SEO của một trang web. Sau đây chúng ta cùng bắt đầu với một vài điều cơ bản.

I. Tất cả về các cụm từ.

Hầu hết mọi người đều muốn cải thiện vị trí trang web của họ trên các công cụ tìm kiếm theo các cụm từ cụ thể. Ví dụ, công ty bán sản phẩm sẽ muốn nhấn mạnh và làm nổi bật trang web của họ bằng các từ khóa liên quan đến tên và thương hiệu sản phẩm của họ. Rõ ràng, sản phẩm càng khác thường, sẽ dễ hơn trong việc tìm kiếm nó. Trước khi bắt đầu một công việc nào đó, chúng ta phải hiểu rằng chúng ta không định vị toàn bộ trang web cho một cụm từ khóa cụ thể nào đó. Cách tốt nhất, theo tôi là tạo ra các trang tĩnh "Landing pages", là trang sẽ tạo ra một nội dung cụ thể để định vị nó trên một công cụ tìm kiếm cụ thể.

II. Thêm sơ đồ trang web.

Bạn cũng nên bắt tay vào việc tạo sơ đồ của trang web, càng sớm càng tốt, nếu như bạn chưa làm điều đó. Sơ đồ trang web là gì ? Theo như www.sitemaps.org định nghĩa: "sơ đồ trang web là một cách dễ dàng để quản trị viên thông báo cho các công cụ tìm kiếm về các trang trên trang web của họ để chúng thu thập thông tin". Bằng cách này google hoặc các công cụ tìm kiếm khác sẽ thu thập thông tin nhanh hơn về các trang web của chúng ta. Chúng cũng sẽ tiếp cận sâu vào các trang mà chúng có thể đã được bỏ qua hoặc không. Mặc dù có rất nhiều Gem (ví dụ như: sitemap_generator, rails-sitemap, dynamic_sitemaps) giúp lập trình viên tạo ra sơ đồ trang web, nhưng tôi thực sự khuyên bạn nên tự làm điều này. Đây là ví dụ cơ bản về việc tạo sơ đồ trang web đơn giản:

class SitemapsController < ApplicationController
  SHOW_CACHE_EXPIRATION = 1.hour
  layout :false
  before_filter :init_sitemap

  def index
    @articles = Article.all
  end

  private

  def init_sitemap
    headers['Content-Type'] = 'application/xml'
    shopikon_expires_in SHOW_CACHE_EXPIRATION, public: true
    @sitemap = Sitemap.new
  end
end

Hãy thêm một view cho một hoạt động như trên:

xml.instruct! :xml, version: '1.0'
xml.tag! 'sitemapindex', 'xmlns' =>
"http://www.sitemaps.org/schemas/sitemap/0.9" do

  @articles.each do |article|
    @sitemap.add_link
    xml.tag! 'sitemap' do
      xml.tag! 'loc', path_to_article
    end
  end
end

Và đó là nó! Nếu như tự bạn tạo sơ đồ trang web, bạn có toàn quyển kiểm soát nội dụng. Hãy lưu ý răng Google (hoặc các trình thu thập dữ liệu - crawlers khác) sẽ có thể sẽ truy cập tất cả các trang được liên kết từ các trang được liệt kê trong sơ đồ trang web của bạn. Nếu bạn muốn tránh nó, bạn có thể dự dụng robots.txt hoặc với thẻ được bao gồm: <head> section: <meta name="robots" content="noindex"> .

III. Làm cho nội dung có thể được khám phá được bằng các LandingPages.

Một ý tưởng hay nữa là tập trung vào các LPs (LandingPages) thông qua sidebar hoặc bên trong các quảng cáo. Bằng cách này các trình crawlers sẽ thu thập thông tin nhanh hơn. Mục đích chính của các LPs là để thu hút người dùng và Google vào trang web của chúng ra. LandingPages phải bao gồm một số điểm truy cập/ điều hướng đến các trang web khác. Vì vậy, giả sử trang web của chúng ta bán xe đạp, và chúng ta muốn làm nổi bật nó với cụm từ "The best bicycles" (hay là từ khóa "best" hoặc "bicycles") thì chúng ta phải tạo trang LP với nội dung nói về "The best bicycles". Trong nhiều trường hợp, LPs là các bài viết, tin tức, bài đăng trên blog, trang web chi tiết về sản phẩm, hoặc bất kì trang web nào khác có nội dung về cùng chủ đề của bạn. Vấn đề ở đây là, chúng nên bao gồm một số nội dung độc đáo và có giá trị như một bài viết hay về chủ đề hoặc một số hình ảnh tốt nếu có thể. Các công cụ tìm kiếm, đặc biệt là Google, khá thông minh trong việc xác định nội dung nhân tạo hoặc nội dung trang web trùng lặp. Bước đầu tiên là tạo ra một URL phù hợp với LP của chúng ta, và đưa ra một khuôn mẫu tốt cho tất cả các trang LP trong tương lai. URL cần ngắn gọn và dễ đọc. Nó cần phải bao gồm 1 cụm từ để chỉ ngay ra trang LP của chúng ta đang nói về vấn đề gì. Hãy nói rằng chúng ta đồng tình với tất cả các LPs đều là các bài viết của chúng ta. URL của chúng ta phải tương tự với URL này: http://www.amberbit.com/a/best-bicycles hoặc http://www.amberbit.com/a/the-best-bicycles Cái /a/ diễn tả từ article, nhưng nếu nó là một blog thì nó nên là domain/bp/blog-post-title. Nếu nó là nội dung của một sản phẩm thì nó nên là domain/p/product-name. Điều quan trọng nhất là phần sau /a/ nên là duy nhất và nó nói lên nội dung của trang web. Tại sao cần /a/ thay vì /article/, ai đó có thể hỏi như vậy. Giả sử Google quan tâm đến định dạng các URL, chúng ta chỉ muốn những từ có ý nghĩa trong đó Chẳng hạn như tên miền và slug, đó là trung tâm của chủ đề của chúng ta. Một mẹo quan trọng để bổ sung là thay thế tất cả các kí tự đặc biệt, dấu gạch dưới cho tiêu đề của bài viết, với các dấu gạch nối (-). Vì một lí do nào đó không rõ, Google xử lí chúng tốt hơn nhiều so với các dấu gạch dưới. Dưới đây là định tuyến Rails đơn giản cho các LPs như vậy:

get 'a/:slug', slug: /[a-z-]+\w+/i, to: 'articles#show', as: :article
# assuming you are using all generated actions
resources :articles, except: :show

Bây giờ chúng ta biết chúng ta phải làm gì, bước tiếp theo là làm điều đó như thế nào. Hãy bắt đầu với dữ liệu metadata trong ứng dụng của chúng ta. Nó phải bao gồm thẻ tiêu đề, trọng ví dụ của chúng ta thì nên như sau:

<title>The best bicycles</title>

Bước tiếp theo, là thẻ meta với mô tả trang LP này. Cần phải có một hoặc hai câu về nội dung trong trang của chúng ta. Chiều dài khuyến nghị là 150-160 kí tự.

<meta content="Are you interested in bicycles? Do you like Mountain
biking? Or maybe chillin sunday ride over the park?. Read more on
AmberBit!" name="description">

Điều quan trọng thông qua hai thẻ html là chúng phải là duy nhất trong các trang LP. Công cụ quản trị trang web của Google hay là công cụ SEO khác như Raven luôn chỏ đến chúng trong khi tính toán, crawling website.

IV. Chìa khóa của thành công là sự đơn giản.

Nội dung của trang LP cần nên đơn giản mà không cần tới các Javascript hoặc là Css cực kì phức tạp. Toàn bộ trang web càng đơn giản càng tốt. Nếu như bạn muốn nội dung của trang web phức tạp với các hiệu ứng Javascript và Css, thì chỉ cần không mang nó đến với các trang LP. Chúng cần phải càng nhẹ càng tốt. Các trang LP giống như một kiểu chài mồi đồi với người sử dụng và giới thiệu họ đến với website của bạn. Nó sẽ thu hút người dùng vào trang web của bạn. Sau đó tự người dùng sẽ điều hướng đến các trang khác cùng nằm trong website của bạn. Một công cụ thực sự tốt để đo tốc độ trang web của bạn là http://www.webpagetest.org và Google Page Speed. Mục đích chính của ta là phải có trang LP siêu nhanh và giảm tỉ lệ thoát xuống càng thấp càng tốt. Tỉ lệ thoát là gì ? Đó là tỉ lệ phần trăm người dùng ghé thăm trang web của chúng ta và bị trả lại (click vào nút back ở trên trình duyệt), thay vì lưu lại hoặc duyệt vào trang web đó. Các công cụ tìm kiếm thực sự nhạy cảm với điều đó – ví dụ như Google. Các lí do chính của tỉ lệ thoát lớn là các trang LP load rất chậm. Bằng cách này người dùng sẽ ức chế và rời khỏi trang của chúng ra trước khi nội dung trang web được load ra cho người dùng đọc. Điều này thực sự phổ biến với các truy cập internet bằng di động.

V. Nội dung của bạn phải được phục vụ trước tiên.

Di chuyển đoạn mã Javascript xuống dưới cùng, tức là cho chúng load sau khi nội dung trang web được load ra. Di chuyển Css lên trên cùng của trang web. Giói TCP đầu tiên của nội dung mà trình duyệt web của người dùng tải xuống là 1460 bytes. Nếu gói này bao gồm toàn bộ mọi thức nó cần để render ra nội dung, nó sẽ làm tất cả! Nó không chỉ bao gồm các Css của bạn(bạn không nên sử dụng Css nội bộ) mà còn các thẻ nạp trước của DSN. Đó là cái gì? Chúng là các liên kết đơn giản đến tất cả các tên miền/ dịch vụ bên ngoài mà chúng ta sử dụng trên trang web của chúng ta. Nếu bạn sử dụng Amazon S3 hoặc CloudFront để lưu trữ nội dung trang của mình, hoặc chỉ là hình ảnh, hãy thêm thẻ dns-prefetch để trình duyệt có thể xác định nhanh hơn và do đó nó sẽ không phải chờ nó sau này. Ví dụ như sau:**

<link rel="dns-prefetch" href="http://cdn.mydomain.com">

Nếu bạn sử dụng Google Analytics, bạn cũng nên thêm nó vào dns-prefetch:

<link rel="dns-prefetch" href="http://www.google-analytics.com">

VI. Bật HTTPS.

Chúng tôi khuyến nghị các bạn là phải luôn bao gồm đầy đủ các giao thức trong các liên kết để sau này sẽ dễ dàng hơn nếu chuyển sang https. Nhân tiện, bạn nên kích hoạt giao thức https cho trang web của bạn nếu bạn muốn được đứng cao hơn trong bảng xếp hạng. Một ý tưởng tốt là chuyển hướng các yêu cầu http sang https với đúng trạng thái 301. Rất may là Rails có hỗ trợ.