SEO効果の高いURLをRailsのRoutingだけを使ってつくる

| コメント(0) | トラックバック(0) | SEO効果の高いURLをRailsのRoutingだけを使ってつくる | この記事をはてなブックマークに登録 このエントリのはてなブックマーク数

検索エンジンに親和性が高いURLとして"/"(スラッシュ)ではなく"-"(ハイフン)で区切るURLがあるそうです。

例えば、

  • 「http://example.com/sample/target/12.html」

ではなく

  • 「http://example.com/sample-taget-12.html」

の方が検索エンジンに好まれるのだそうです。

そこで、今回は普通のRailsアプリを"/"(スラッシュ)ではなく"-"(ハイフン)で区切る形式のURLに対応させる方法をご紹介します。

ちなみに、Rails-2.2.2で試しました。

今までは?

Railsのデフォルトのroute.rb内で定義されているルーティングでは、controllerやaction、パラメータの区切りが"/"(スラッシュ)だったので、

  1. Apacheのmod_rewriteで"-"(ハイフン)を"/"(スラッシュ)に置換
  2. Railsでは普通のroute.rbでルーティング
  3. link_toによるリンク作成時にhelperでurl_forを上書きして、URLの"/"(スラッシュ)を"-"(ハイフン)に置換

とか、すごい大変なことをしていました。なぜなら、RailsのRoutingがカオスと言われていたためさわるのが恐かったのです。

Railsのルーティングで同じことを実現

Railsではコントローラとアクションなどの区切り文字を指定できます。

ActionController::Routing::SEPARATORS

script/consoleで入力すると、現在設定されている区切り文字が確認できます。

% ruby script/console
>> ActionController::Routing::SEPARATORS
=> ["/", ".", "?"]

この区切り文字がroute.rbのURLルールを書く部分で利用できるので、下記の1行を各環境のconfigファイル(config/environment/*.rb)に追加するか、適当な名前でconfig/initializers/の中にファイルを作ってそこに書きます。

私の場合は、開発でも本番でも利用したかったので、add_routing_separator.rbというファイルを作ってそこに書きました。

config/initializers/add_routing_separator.rb

ActionController::Routing::SEPARATORS << "-"

config/route.rb

最後に、ルーティングを定義するおなじみroute.rbで追加した区切り文字を使って下記のように変更します。

diff --git a/config/routes.rb b/config/routes.rb
index 8ca53fc..695ea5d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -43,9 +43,15 @@ ActionController::Routing::Routes.draw do |map|
   # Note: These default routes make all actions in every controller accessible
via GET requests. You should
   # consider removing the them or commenting them out if you're using named rou
tes and resources.

-  map.connect ':controller/:action/:id'
-  map.connect ':controller/:action/:id.:format'
+  map.connect ':controller-:action-:id'
+  map.connect ':controller-:action-:id.:format'
 end

"/"(スラッシュ)を"-"(ハイフン)に置き換えているだけですね。 これで、link_toやurl_for等でもなにも気にせずいつものとおりに書いているだけで、URLがスラッシュ区切りからハイフン区切りになります。 もちろん、デフォルトのルーティングだけでなく、独自の名前付きルーティングやその他のものでも"-"(ハイフン)を区切り文字として利用できるようになります。

よかったら試してみてくださいね。

SEO効果があるかどうかはうわさなのであしからずー

トラックバック(0)

トラックバックURL: http://blog.fulltext-search.biz/mt/mt-tb.cgi/56

コメントする

カテゴリ

  • サービス

あわせてなかのひとのはてな

あわせて読みたい
この日記のはてなブックマーク数
OpenID対応しています OpenIDについて

このブログ記事について

このページは、noriakiが2009年5月30日 15:20に書いたブログ記事です。

ひとつ前のブログ記事は「映画のエンドロール(Credit Title)をjQueryで再現してみた」です。

次のブログ記事は「タイムラインをメニューに使ったサイト」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。