12/08/2018, 15:09

SEO in Rails app

Ngày nay, RoR đã trở thành một framework phổ biến với khá nhiều gem hỗ trợ cũng như các tài liệu hướng dẫn.Vậy làm sao để web app viết bằng RoR thân thiện hơn với các bộ máy tìm kiếm (như Google)? Nào chúng ta cùng tìm hiểu! Clean Urls Url mặc định trong Rails app cũng khá dễ nhìn và dễ đọc, ...

Ngày nay, RoR đã trở thành một framework phổ biến với khá nhiều gem hỗ trợ cũng như các tài liệu hướng dẫn.Vậy làm sao để web app viết bằng RoR thân thiện hơn với các bộ máy tìm kiếm (như Google)? Nào chúng ta cùng tìm hiểu!

Clean Urls

Url mặc định trong Rails app cũng khá dễ nhìn và dễ đọc, nhưng tất nhiên bạn sẽ muốn url /articles/tutorial thay vì /articles/22 đúng ko? :#) Cách đơn giản nhất là viết lại hàm to_param trong model nơi chúng ta muốn thay đổi Url tương ứng. /app/model/article.rb:

class Article < ActiveRecord::Base
  def to_param
    "#{id} #{name}".parameterize
  end
end

Các bạn có thể tham khảo thêm railscast này để nắm rõ hơn. Ở phương thức trên, lúc truyền lên url vẫn còn chứa id, nếu muốn một url "clean" hơn, thì tốt nhất chúng ta nên sử dụng gem, phổ biến hơn cả là friendly_id.

Điều hướng /page/index về /page/

Bạn cũng nên điều hướng /page/index về /page/. Rất đơn giản, chỉ cần sửa trong route.rb:

get '/page/index' => redirect('/page')

Có 1 tutorial rất hay về việc này, các bạn có thể xem ở đây.

Thêm Title và Description (Meta Tags) vào trang

RoR có 1 gem gọi là Meta tag sẽ lo việc này cho chúng ta (các vấn đề liên quan đến meta tags). Nếu Meta Tags có vẻ nặng, thì chúng ta có thể dùng gem metamagic nhẹ hơn với nhiều lựa chọn.

301 điều hướng non www về www

Ở server production,đa phần chúng ta hay dùng apache + phusion passenger, vậy trong /etc/apache2/sites-available/default, bạn có thể thêm đoạn code bên dưới(nếu chưa có):

ServerAlias www.mydomain.com
DocumentRoot /var/www/public
AllowOverride all
Options Indexes FollowSymLinks MultiViews

Bạn có thể tham khảo thêm các ví dụ về 301 redirection tại RoR API documentation.

Robots.txt

Rails không đi kèm với bất cứ robots.txt nào, vì vậy bạn nên tạọ 1 file trong thư mục /public. Đây là 1 ví dụ về robots.txt trong rails app:

 Disallow: page/*/edit #hoặc bất cứ nguồn nào
 Disallow:admin/* #nếu bạn đang dùng active-admin 

Add noindex

Nếu bạn ko muốn các công cụ tìm kiếm đánh index vài trang, thì bạn có thể dùng noindex tag. Gem Meta tag trông có vẻ là cách dễ nhất để add thêm noindex tag.

Sitemap && XML Sitemap

Với các sitemap đơn giản, bạn có thể dùng gem sitemap hoặc Dynamic sitemap. Còn với XML Sitemap, thì có gem XML Sitemap.

I18n

Việc sử dụng I18n đã quá quen thuộc đối với các lập trình viên nên ở đây chúng ta sẽ không đi sâu nào nữa. Nhưng một website đa ngôn ngữ là rất có lợi cho việc seo app.

Tối ưu hóa tốc độ site

Bạn có thể sử dụng caching để tăng tốc độ load trang, điều đó thật sự là 1 phần quan trọng trong việc xếp thứ hạng trang. Với RoR, bạn có thể caching 2 levels, server-side và client-side. Chúng ta sẽ đi vào basic trước.

Server side caching

Bạn có thể enable server-side caching bằng cách:

config/environments/development.rb
config.action_controller.perform_caching = true

sau đó, bạn có thể add caching cho bất cứ action nào

/app/controllers/products_controller.rb

caches_page :index, :show

def index

....

end

def show

...

end

Client-side caching

Với client, hãy chắc chắn rằng bạn đang sử dụng CDN để deliver jQuery. bootstrap và các thư viện phổ biến khác. Add thêm settings dưới đây:

config.serve_static_assets =true

config.static_cache_control ="public, max-age=2419200" # cache will get updated every four weeks

hoặc bạn cũng có thể sử dụng thêm gem rack-cache.

Tham khảo: inboundio.com

0