SEO on Rails: URLs Amigáveis

Deixar as URLs de sua aplicação amigáveis pode fazer uma grande diferença no ranking dos mecanismos de busca. Isso significa fazer com as URLs fiquem mais simples, criando endereços que sejam legíveis e que tragam alguma informação sobre o conteúdo da página.

Vejamos alguns exemplos de URLs complexas:

index.php?section=cine&category=comedy

ou

/cgi-bin/index.cgi?id=6F7YCH&page=6

Quais os problemas de ter URLs complexas?

  • A complexidade da URL torna o endereço difícil de memorizar
  • Em alguns casos fica difícil de saber o que você vai encontrar antes de clicar em um link desse tipo
  • A tecnologia utilizada pelo aplicativo fica exposta
  • Se a tecnologia utilizada no site tiver que ser alterada (php para ruby, por exemplo), todas as URLs antigas ficarão inválidas

A solução com Rails

Para quem usa Rails, principalmente da maneira Restful, já tem esses problemas minimizados. Basta fazer um scafold e as URLs para as actions já ficam em um formato simples, como no nosso exemplo de locadora abaixo:

Lista de filmes

http://locadora.com/filmes

Detalhes de um filme com id igual a 12

http://locadora.com/filmes/12

Novo filme

http://locadora.com/filmes/new

Edição de um filme com id igual a 12

http://locadora.com/filmes/12/edit

 

Esse é um dos conceitos de REST: a URL deve descrever o recurso disponibilizado. Acha que está bom? Está, mas podemos melhorar ainda mais. Não seria melhor se ao invés de identificadores numéricos, tivéssemos o próprio título do filme na URL? Por exemplo, a página com detalhes do filme teria a endereço:

http://locadora.com/filmes/de-volta-para-o-futuro

Existem algumas maneiras de fazer isso em um aplicação Rails. Uma bem simples é instalando o plugin permalink_fu:

$ script/plugin install git://github.com/cyu/permalink_fu 

Depois de instalado, basta fazer a seguinte chamada nosso Model Filme, para usar o campo título como identificador na URL:

  class Filme < ActiveRecord::Base

    has_permalink :titulo

  end

Logicamente o campo título terá seus caracteres especiais e espaços removidos para poder ser usado como endereço http.

Essa abordagem só é viável quando o título do filme é único, pois ficaria impossível distinguir entre dois filmes com o mesmo título, já que ambos teriam a mesma URL. Para estes casos, podemos sobrescrever o método to_params, usando o helper PermalinkFu.escape do plugin para remover acentos e espaços do campo que queremos usar na composição do endereço: 

class Filme < ActiveRecord::Base

  def to_param

    "#{id}-#{PermalinkFu.escape(titulo)}"

  end

end

Assim, teríamos o formato:

http://locadora.com/filmes/12-de-volta-para-o-futuro

Essa solução causa um pequeno efeito colateral, já que o parâmetro recebido pelo controller em params[:id] não terá apenas um valor do tipo inteiro, mas sim uma string. Observe o exemplo de método show do controller de filmes: 

class FilmesController < ApplicationController

  def show
   @filmes = Filme.find(params[:id].to_i)

   respond_to do |format|
     format.html # show.rhtml
     format.xml  { render :x ml => @filmes.to_xml }
   end

  end
end

Note que é necessário uma conversão do paramêtro ID para o tipo inteiro, em params[:id].to_i, para que o find funcione corretamente.

O uso de URLs amigáveis, além de deixar os endereços de sua aplicação mais fáceis de entender e de lembrar, também fazem com que o posicionamento nos buscadores melhore, já que palavras chave pesquisadas passam a aparecer também nos seus links. 

Leia mais sobre o uso de URLs amigáveis:

Criando URLs amigáveis em brunotorres.net

Better Search Engine Friendly URL’s with Ruby on Rails

SEO Optimization of URLs in Rails with to_param

6 comentários até agora

  1. Éverton Ribeiro on

    Muito boa a dica.
    Aprendi isso quando trabalhei em agencia de turismo que trabalhava com sites de hotel. Acabei por aplicar isso nas ulrs do sistema de e-commerce que estou fazendo em Rails, alguns exemplos:

    /departamentos/automotivos-subwoofer-e-woofer
    /produtos/mochila-targus-tsb07501us-league-15-4-azul
    /fabricantes/targus

    Temos recebido um bom retornos dos clintes com o uso destas urls, e não apenas bons resultados no buscador.

  2. Eduardo Fiorezi on

    Olá Flávio,

    Acho que este ultimo passo não é necessário( @filmes = Filme.find(params[:id].to_i)), pois o rails já converte esse params[:id] para int.

    Pelomenos faz algum tempo que isto acontece.

    Abraços,
    Eduardo

  3. de musicas on

    Meu nome é Alexandre, faço parte do buscar letras, tivemos um problema grave com Urls amigáveis, se você tiver interesse em saber como solucionamos o problema visite esse link:

    http://br.forums.wordpress.org/topic/97

    E caso tenha alguma dica, para nos fornecer agrademos…

    parabéns pelo post e tudo de bom….

  4. Patrick Espake on

    Esse comando tá quebrado: script/plugin install git://github.com/cyu/permalink_fu

    Abraço.

  5. Marcelo on

    Não está quebrado, apenas está faltando o .git no final!!
    script/plugin install git://github.com/cyu/permalink_fu.git

  6. Reiny on

    Muito boa dica ! ajudou muito flavio vlw !


Responder