Code Chuẩn Seo, Giới Thiệu Một Số Kỹ Thuật Seo Trong Rails

i. GIỚI THIỆU

Trong thực tế SEO là một việc rất quan trọng khi đưa một website lên internet, việc website có đông đảo người biết tới dẫn đến cơ hội thành công của website càng cao. Ngoài các hình thức Marketing trên Google AdWords, trên mạng xã hội Facebook, Twiter, Instagram để thu hút người dùng chúng ta cũng có thể SEO trực tiếp cho Website trong quá trình code. Một website đúng chuẩn SEO cần có một cấu trúc rõ ràng, nhấn mạnh được những nội dung chính cần truyền tải. Một Website được code chuẩn SEO sẽ được các Search Engine đánh rank cao, sẽ được xếp ở những vị trí đầu trong kết quả tìm kiếm từ đó dẫn đến việc nó dễ dàng tiếp cận người dùng hơn và ngược lại. Code chuẩn SEO cũng là một hình thức SEO rất hiệu quả không kém gì các hình thức Marketing khác.

Trong bài viết này, tôi sẽ giới thiệu với các bạn cách code chuẩn SEO cơ bản, và một số kỹ thuật SEO trong Rails.

I. CÁC KỸ THUẬT SEO ONPAGE CƠ BẢN

1. SỰ QUAN TRỌNG CỦA CÁC THẺ TITLE, META

Thẻ title, thẻ meta là các thẻ rất quan trọng trong một Site, Google luôn tìm tới chúng trước để biết xem bạn đang muốn chia sẻ những gì. Vì vậy nên để các thẻ này ngay sau thẻ head để Google tìm thấy chúng nhanh nhất thay vì load một loạt mã css, javascript ở phía trước.

a) THẺ TITLE

<title>News 24h in Viet Nam</title>

Khi tìm kiếm một từ khóa trên Google, Google sẽ ưu tiên các trang có thẻ title đúng và chính xác nhất với từ khóa tim kiếm hơn. Title của một trang nên chứa từ khóa thể hiện nội dung trang, cố gắng đặt nó ở vị trí đầu của thẻ. Sự nổi bật của từ khóa trong title được đánh giá rất cao. Không nên lặp từ khóa nhiều lần trong thẻ title, chỉ cần 1 lần là đủ không thì các Search Engine sẽ cho trang web ra khỏi kết quả tìm kiếm.

b) THẺ META

Đây là một loại thẻ quan trọng tiếp sau thẻ title có các loại sau:

  • Keyword
<meta name='keyword' content='danh sách từ khóa'>
Mục đích của thẻ này là cung cấp các từ khóa liên quan cho trang web để Search Engine dễ dàng nắm được nội dung. Nhưng vì có quá nhiều người lợi dụng điều này nên hiện nay các Search Engine không quan tâm đến nó nữa, thế nên hiện nay các Site không còn chứa thẻ meta keyword này nữa

- Description
> ```HTML
<meta name='description' content = 'điền nội dung chủ đạo của trang web'>

Nội dung của thẻ này sẽ được các Search Engine hiển thị ngay bên dưới tiêu đề trang web trong danh sách tìm kiếm nếu không có thẻ này Search Engine sẽ lấy đoạn đầu của bài viết hoặc một phần nào đó có chứa từ khóa tìm kiếm. Thẻ này cần tạo sự ấn tượng và thể hiện chính xác nội dung của trang web để kích thích mọi người vào Site

  • Các thẻ meta khác dùng cho việc chia sẻ bài viết lên các mạng xã hội như facebook, google+
<meta property="og:title" content="bạn điền nội dung chủ đạo trang web"> <meta property="og:url" content="bạn điền đường dẫn của trang web hiện hành"> <meta property="og:image" content="bạn điền hình ảnh của trang web mà bạn muốn hiển thị lên mạng xã hội">

## 2. TỐI ƯU NỘI DUNG TRONG THẺ BODY
  Nội dung bài viết ảnh hưởng đáng kể đến thứ hạng của trang web
Một bài viết nên lặp lại từ khóa nhiều lần, nhưng lặp theo cách tự nhiên nhất. Các từ khóa nên được bôi đậm hoặc in nghiêng dùng <strong>, <em>, hoặc đặt trong các thẻ Heading và nên đặt ở phần đầu tiên của nội dung
## 3. Quan tâm tới các thẻ H1, H2...
Nên đặt thẻ H1 một cách tự nhiên nhất và không cần thiết phải coi nó như một Key chính trong Site. Thẻ H1 được dùng tối ưu nhất theo cấu trúc link, nghĩa là thẻ H1 lồng thẻ <a>
```HTML

<h1><a href='', title=''>News 24h in Viet Nam</a></h1>

Thông thường khi google đọc nội dung trên trang web, google bot sẽ ưu tiên đọc các thẻ heading chủ đạo để nắm được tóm tắt nội dung của trang web. Vì thế nên để tiêu đề, nội dung chính trong các thẻ heading xếp từ cao xuống thấp theo độ quan trọng h1, h2, …Thẻ H1 chỉ cần 1 lần trong trang, dàn trải các đề mục từ H1->H6, và có chứa cả những từ khóa.

4. THUỘC TÍNH title TRONG THẺ a


<li><a  href=''>First Menu Choice</a></li>

Thông thường các mã nguồn như joomla, wordpress hay Drupal trong quá trình generate code thường hay thiếu thuộc tính title trong thẻ <a>. Đây thực sự là một yếu tố khiếm khuyết trong seo onpage. Vì title trong thẻ <a> cũng là một yếu tố rất quan trọng khi mà Google xếp rank cho page

5. TẠO RA SỰ KHÁC BIỆT TRONG MENU

Trong thanh menu của site hãy tạo ra các menu có tiêu đề khác biệt nhau Ví dụ:

  • Thiết kế web đẹp
  • Thiết kế web đẹp 2

Hãy thay nó thành

  • Thiết kế web giao diện đẹp
  • Những website template độc đáo

6. CHUẨN HÓA TÊN FILE

Hãy biến tên ảnh dạng image_001.jpg thành chinhphuvn_2009.jpg và sử dụng thẻ alt, title cho các ảnh.
Tên ảnh và giá trị của alt, title nên gắn liền với ngữ cảnh nội dung của page hiện tại

7. TẠO RA CÁC ĐƯỜNG DẪN URL THÂN THIỆN

Một yếu cũng rất quan trọng để tối ưu trang web là tạo ra các url thân thiện, dễ hiểu link tới các nội dung của Site, giúp cho google bot dễ nhận dạng, hiểu được.
Ví dụ

ở url thứ 2 cấu trúc rõ ràng, từ ngữ tượng trưng như một từ khóa trong kết quả tìm kiếm của Google, điều này giúp Google ưu tiên tìm kiếm bài viết này.

8. TỐI ƯU HÓA TẦN SUẤT XUẤT HIỆN TỪ KHÓA CHÍNH TRONG BÀI VIẾT

Những từ khóa nói lên nội dung của page cần lặp lại nhiều lần ở những vị trí quan trọng. Cho ví dụ trong một bài viết nói về việc “bảo vệ môi trường để nâng cao chất lượng môi trường sống” thì từ khóa chủ đạo chính là “bảo vệ môi trường” cần hiển thị trong kết quả tìm kiếm của Google. Cụm từ này cần xuất hiện ở những điểm nóng sau:


<title>Hãy bảo vệ môi trường để có một cuộc sống khỏe mạnh</title>

  • Trong thẻ meta

<meta property=”description” content=”Chung tay bảo vệ môi trường để  cuộc sống khỏe mạnh >

  • Trong thẻ heading

<h1>Chung tay bảo vệ môi trường là bảo vệ cuộc sống của mỗi chúng ta</h1>

9. TỐC ĐỘ TẢI CỦA SITE

Trang web cần đảm bảo tốc độ load tốt bởi điều này cũng là một yếu tố quan trọng để google xếp rank cho website

Có một số cách cở bản để cải thiện điều này:

  • Xóa các thẻ html đã được comment
  • Hình ảnh đại diện cho bài viết, hay chèn trong bài viết có dung lượng đủ dùng không lớn quá, bởi nếu quá lớn nó sẽ ảnh hưởng đến tốc độ load của trang web
  • Sử dụng kỹ thuật cache cho website, giúp giảm số lần load lại trang.

10. MỘT SỐ KỸ THUẬT KHÁC

Còn một số kỹ thuật khác được liệt kê ngắn gọn dưới đây:

  • Tách các phần css, javascipt ra thành các file riêng, hạn chế sử dụng javascipt
  • Hạn chế sử dụng table html, đặc biệt là việc lồng table
  • Tạo trang 404 cho các liên kết không tìm thấy
  • Tạo các nút chia sẻ bài viết qua mạng xã hội
  • Tối ưu việc hiển thị Site trên thiết bị di động
  • Nếu có thể tạo Rss feed cho nội dung của Site
  • Tạo sitemap chứa liên kết đến các trang của Site
  • Hạn chế việc sử dụng flash vì các công cụ tìm kiếm không đọc được nội dung của flash

II. Một số kỹ thuật SEO trong Rails

1. Clean Urls (Friendly Url)

Rails mặc định đường dẫn đến bài viết có dạng http://domain.vn/articles/1 Url dạng này có thể thấy cũng rất rõ ràng và dễ hiểu, nhưng với các brower và Search Engine nó thực sự vẫn chưa thân thiện lắm. Thay vì dùng id vào đường dẫn hãy sử dụng title hay một trường nào đó ngắn gọn và hàm chứa nội dung bài viết vào đường dẫn ví dụ http://domain.vn/bai-viet/to-quoc-goi-ten-minh.
Có 2 cách phổ biến có thể hiện thực điều này.

  • Cách 1: Override phương thức to_param trong model của url muốn sửa.

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

Việc đặt id ở đây là cần thiết để tránh việc các url bị trùng nhau.

  • Cách 2: Sử dụng gem Friendly_Id, đây là một gem rất tốt và theo tôi là đó là cách dễ và tốt nhất để custom Url thân thiện hơn.

Cách sử dụng friendly_id:
-- Gemfile
gem "friendly_id", "~> 5.1.0"
** Chạy các lệnh sau**
rails g friendly_id
Thêm slug column tới bảng đang được xét


rails g migration add_slug_to_articles slug:string:uniq


sau đó


rake db:migrate

Trong model của bảng thêm các dòng sau


class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :title, use: :slug
end

Để hiểu chi tiết hơn, có thể tới trang sau: https://github.com/norman/friendly_id

2. Redirection /page/index tới /page/

Thực hiện điều này bằng cách thêm vào file route.rb dòng sau:


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

Bạn có thể đọc nhiều hơn về routing trong rails tại http://guides.rubyonrails.org/routing.html#redirection

3. Đặt ttile và description (meta tags) trên các pages

Rails có Meta tags gem giúp tạo các meta tag trên các pages
xem chi tiết tại https://github.com/kpumuk/meta-tags
Nếu Meta tags gem có hơi nặng để load, bạn có thể dùng metamagic gem nó nhẹ hơn với basic title, description và keyword options
xem chi tiết về metamagic gem tại:
https://github.com/kpumuk/meta-tags

4. 301 Redirect từ non www tới www

Trên product sever của bạn, có khả năng cao là bạn đang sử dụng apache + phusion passenger, vậy bạn có thể thay đổi file /etc/apache2/sites-available/default như sau


ServerAlias www.mydomain.com
DocumentRoot /var/www/public
AllowOverride all
Options Indexes FollowSymLinks MultiViews
Bạn Có thể xem nhiều ví dụ về 301 redirection tại
http://api.rubyonrails.org/classes/ActionDispatch/Routing/Redirection.html

5. Robots.txt

Rails mặc định không có robots.txt bởi vậy bạn có thể tạo nó trong thư mục /public trong app của bạn. Dưới đây là một ví dụ file robots.txt của rails app
robots.txt


Disallow: page/*/edit # or whatever the name of resources are<br> Disallow: admin/* # if you are using active-admin

6. Redirect url cũ tới url mới

Nếu bạn đã thay đổi các url của một post cũ tới mới, bạn có thể edit routes.rb để thực hiện 301 redirect từ urls cũ tới mới


match "/stories" => redirect("/posts")


Không may mắn rails không có cách tốt hơn để tập trung edit/redirection dù bạn có thể xây dựng logic trong file routes.rb

7. Tạo noindex

Nếu một số trang bạn không muốn các Search Engine đánh index, bạn có thể dùng noindex tag. Meta_tags gem thực hiện noindex rất dễ dàng

8. Sitemap và XML sitemap

Sitemap nói đơn giản có thể giống như một tấm bản đồ chỉ dẫn cho các Search Engine nắm được các lối đi trong Site của bạn.
Với sitemap đơn giản bạn có thể dùng sitemap gem, xem sitemap gem tại: http://rubygems.org/gems/sitemap
hoặc Dynamic Sitemaps, xem chi tiết tại:
https://github.com/lassebunk/dynamic_sitemaps
Với XML Sitemap có thể dùng XML Sitemap gem, xem chi tiết tại:
http://rubygems.org/gems/xml-sitemap

9. i18n

Nếu người dùng mục tiêu của bạn không biết tiếng Anh và nếu các nội dung của bạn là một ngôn ngữ khác, bạn có thể dùng i18n, nó được tích hợp sẵn ngay trong Rails

10. Tối ưu tốc độ của site

Bạn có thể dùng cache để tăng tốc độ load site nó là phần rất quan trọng trong việc xếp rank của site. Với Rails, bạn có thể caching ở 2 mức độ, Server side và client side

##11. GeoTargeting Bạn có thể dùng geocoder hoặc geokit gems để dùng geotargeting trên nội dung của bạn. Geokit đưa ra nhiều lựa chọn cho geolocation giống như yahoo geo API , bạn có thể cài đặt
latitudes/longitudes trong 1 bảng. Sau đó có thể dễ dàng lấy về thông tin location của user bằng các method sau:


geocoded_by :full_street_address  #có thể cũng là 1 address ID
after_validation :geocode              #tự động lấy về tọa độ địa lý của user

Nó có thể dùng cho việc xác định và show các nội dung khác nhau tới các vùng miền khác nhau.

12. Tối ưu hóa giao diện Mobiles

Với các Search Engine, mobile SEO cũng là một yếu tố ảnh hưởng rất lớn tới Rank của site Để tối ưu site của bạn trên mobiles, bạn có thể dùng mobile_fu gem, nó giúp phát hiện tự động thiết bị ngừơi dùng và có show tương úng stylesheet cho từng loại thiết bị. Nếu không muốn sử dụng gem, thì bạn chỉ còn cách responsive giao diện cho việc hiển thị trên các thiết bị khác nhau, cách phổ biến nhất là dùng bootstap.

III. KẾT LUẬN

Trên đây là một số kiến thức tôi muốn chia sẻ với mọi nguời về SEO. SEO cũng là một mảng rất phong phú và đa dạng, làm về nó thì không khó nhưng đòi hỏi phải biết nhiều thủ thuật, mà để biết được nhiều thì cần có kinh nghiệm làm việc. Bài viết trên chỉ giới thiệu những kỹ thuật cơ bản nhất của SEO, hy vọng rằng nó sẽ là một bài viết hữu ích cho những ai đó đang muốn bắt đầu tìm hiểu về SEO. Cảm ơn các bạn đã quan tâm tới bài viết của tôi !.

#ii. Tham khảo http://searchengineland.com/guide/seo/html-code-search-engine-ranking
http://www.inboundio.com/blog/seo-for-ruby-on-rails-complete-guide/
http://thietkewebchuanseo.com/kien-thuc-seo_chia-se-kien-thuc/the-nao-goi-la-web-chuan-seo/