SEO-Friendly URL

SEO-Friendly URL's

Van alle SEO onderdelen die belangrijk zijn voor een goede positie in Google is de URL één van de belangrijkste

De URL is het ‘adres’ van een webpagina. De URL van dit artikel is bijvoorbeeld /posts/seo-friendly-url-s-in-ruby-on-rails. Zoekmachines analyseren iedere pagina van een website om te beoordelen waar die pagina over gaat.

Als in de URL van een pagina hetzelfde zoekwoord terugkomt als in de tekst, dan weet de zoekmachine dat de betreffende pagina relevant is voor dat specifieke zoekwoord.

Een goed CMS (content management systeem) dat op de juiste manier is ingericht maakt automatisch een goede URL aan.

In deze artikel reeks kijken we naar de meest voorkomende technieken die we gebruiken om SEO ranking te optimaliseren met enkele voorbeelden en tips voor een Rails-applicatie.

SEO-Friendly URL’s in Ruby on Rails

Rails gebruikt standaard de primaire sleutel (ook id genoemd) om routes en URL's te genereren voor je record. Als je bijvoorbeeld een nieuwe post template maakt, is de URL die de record benadert standaard van het type /posts/1 waarbij 1 de identifier is. 

Voor een betere gebruikerservaring (UX) maar ook om beter te presteren in de zoekmachines, adviseren we over het algemeen dat de URL bestaat uit trefwoorden die aan de record zijn gekoppeld.

Je kunt zelf een systeem ontwikkelen om dit te beheren, maar wij gebruiken hier een gem genaamd friendly_id voor. Hiermee kun je de link genereren van een reeks die is gekoppeld aan de record. In het voorbeeld zal /posts/1 omgezet worden naar /posts /seo-in-rails. Waarbij de titel een gekozen veld van de template is.

Nadat je de instructies voor het installeren van de gem hebt gevolgd, krijg je het volgende:

 #app/models/post.rb
class Post < ApplicationRecord
# friendly url
extend FriendlyId
friendly_id :title, use: :slugged
end

Als je dan een nieuwe post aanmaakt met de volgende info:

Post.create! title: "SEO in Rails"

Deze krijgt dan de unieke link:

/posts/seo-in-rails

Je past vervolgens je query aan om te zoeken op de friendly id:

# app/controllers/posts_controller.rb
def show
@post = Post.friendly.find(params[:id])
end

Je kunt ook een stap verder gaan en de URL genereren met een gekoppelde scope:

# in model
class Restaurant < ActiveRecord::Base
extend FriendlyId
belongs_to :city
friendly_id :name, :use => :scoped, :scope => :city
end
# in controllers
class City < ActiveRecord::Base
extend FriendlyId
has_many :restaurants
friendly_id :name, :use => :slugged
end
# fidner
City.friendly.find("seattle").restaurants.friendly.find("joes-diner")
# URLs:
http://example.org/cities/seattle/restaurants/joes-diner
http://example.org/cities/chicago/restaurants/joes-diner

Tip

Wanneer je een record probeert op te slaan dat een dubbele id zou genereren, voegt FriendlyId een UUID toe aan de gegenereerde slug om de uniekheid te waarborgen.

car = Car.create :title => "Peugeot 206"
car2 = Car.create :title => "Peugeot 206"
car.friendly_id #=> "peugeot-206"
car2.friendly_id #=> "peugeot-206-f9f3789a-daec-4156-af1d-fab81aa16ee5"

Aangezien UUID's lelijk zijn, biedt FriendlyId een "slug candidate" -functionaliteit om je dit te laten specificeren. Bijvoorbeeld:

class Restaurant < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
# Try building a slug based on the following fields in
# increasing order of specificity.
def slug_candidates
[
:name,
[:name, :city],
[:name, :street, :city],
[:name, :street_number, :street, :city]
]
end
end
r1 = Restaurant.create! name: 'Plaza Diner', city: 'New Paltz'
r2 = Restaurant.create! name: 'Plaza Diner', city: 'Kingston'
r1.friendly_id  #=> 'plaza-diner'
r2.friendly_id  #=> 'plaza-diner-kingston'

Auteur Anne

CategorieDevelopment

FotoKaleidico