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 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 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 def show @filmes = Filme.find(params[:id].to_i) respond_to do |format| format.html # show.rhtml format.xml { render :xml => @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: