SEO in Rails app
This post hasn't been updated for 2 years
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
All Rights Reserved