エンジニアのためのSEO入門
ApacheウェブサーバーのRewrite設定で使える正規表現サンプル集

サーバーの設定変更は一歩間違えると致命傷ですのでくれぐれも慎重に。

スキルセットや共通言語が異なる
エンジニアとWeb担当者をつなぐための手引書

エンジニアのためのSEO入門

これまで3回に分けて、「URLの最適化」について解説してきました。URL設計時の基本となる永続化の考え方、また被リンクが分散してしまった場合の正規化、そして動的なURLでもしっかりとインデックスしてもらうための静的化(擬似静的化)の手法などです。

URLの最適化3つの方法

いずれもクローラビリティを向上させ、サイトのコンテンツを適切にインデックスしてもらうことが目的ですが、その際にはサーバーの設定を変更する必要があります。今回は、Apacheの代表的なモジュールである「mod_rewrite」のサンプルコードをいくつか紹介していきます。

※このサンプルはいずれも、サイトのルートディレクトリに置いた.htaccessでリライト設定をする場合のものとなっています。

URLの擬似静的化の実例

まずは、前回記事のおさらいも兼ねてシステムで動的に生成されるインデックスページのURLを擬似静的化する場合のサンプルをご紹介します。

たとえば、あるサイトでエリアを指定して結果を表示する場合「mod_rewrite」では、カテゴリのURLを以下のように擬似静的化しているはずです。

東京都港区のレストランを一覧表示するページのURL
  • 擬似静的化されたURL
    /area/kanto-13-minato/
  • サンプルコード
    RewriteRule ^area/(.*)-(.*)-(.*)/$ /area.php?area1=$1&area2=$2&area3=$3&sort=2 [L]
表示部分はarea.phpで生成、以下の4つのパラメータを必要とする。
パラメータ名 パラメータ値 値の説明
area1 kanto 関東(地域)
area2 13 東京(都道府県)
area3 minato 港区(市区町村)
sort 2 人気順(並び順、1が新着順、2が人気順など)

「area1=kanto」「area2=13」「area3=minato」というパラメータ値がarea.phpへ渡ります。擬似静的化されたURLには、sortの値(並び順を示す情報)が含まれていませんが、固定値を渡すことで初期の並び順を指定することもできます。

またRewriteCondディレクティブを加えることで、特定条件のときだけ処理をすることができます(「HTTP_USER_AGENT」や「REMOTE_ADDR」で携帯電話からのアクセスを振り分け、「HTTP_REFERER」でダイレクトアクセスを禁止。「QUERY_STRING」をプログラムへ渡して処理するなど)。

実際に試してみよう

「mod_rewrite」や「ISAPI_Rewrite」の評価や検証をしてみたい場合は、簡単に自分のパソコンで試すことができます。

「mod_rewrite」であれば、「xampp」というフリーソフトがあります。Windows上でApacheやMysqlを同時にインストールしてくれる便利なソフトです。これをインストールすると、Apacheの下にhttpd.confファイルが作成されます。ローカル環境で、実際にルートディレクトリに.htaccessファイルを作り「mod_rewrite」の挙動を確認してみてください。

「ISAPI_Rewrite」は、お使いのパソコンにIISがインストールされていれば、そのまま利用することが可能です。また、マイクロソフトのIISに関するページから、「Windows Server 2003 R2」の評価版をダウンロードすることもできます。

SEOに効くリダイレクト/リライト設定サンプル集

前回の解説内で、SEOのためのURLの擬似静的化に関しては正規表現を完全に把握していなくても設定できるとお話してきました。ここでは、SEOの観点でリダイレクト/リライトを行う際によく利用されるサンプルコードを簡単な解説付きで説明しています。こんな場合はどうすればいいの? シーン別の対策例を一挙にご紹介します。

※サンプルコードはすべて「mod_rewrite」の例を紹介しています。
サンプルリスト
  1. ドメイン名を変更したい
  2. 「www」の有無を統一したい
  3. トップページのURLを「/index.html」ではなく「/」に統一したい
  4. 特集ページなどをディレクトリ単位で移動したい
  5. 新規投稿記事に付加されてしまうパラメータを消したい

ドメイン名を変更したい

  • 仕様
    http://www.example.com/○○○ ⇒ http://www.example.co.jp/○○○
    ドメイン名以下のURLはすべて同じ構成で、ドメイン名だけを変更する。その際には301リダイレクトさせる。
  • サンプルコード
    RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
    RewriteRule ^(.*)$ http://www.example.co.jp/$1 [R=301,L]

ドメイン名の変更があった場合、SEO的にはURLを擬似静的化させる前にサイト全体をリダイレクトさせる必要があるため、上記のように設定します。同一サーバーで複数のドメインを構成している場合は、古いドメインのみ反応するように、RewriteCondで指定します。RewriteRuleに「R=301」を付加することで新しいドメイン名へリダイレクトがかかります。

「www」の有無を統一したい

  • 仕様
    http://example.com/ ⇒ http://www.example.com/
    wwwなしでアクセスがあったら、wwwありに301リダイレクトさせる
  • サンプルコード
    RewriteCond %{HTTP_HOST} ^example\.com [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

URLの正規化の記事で説明したとおり、URLはwwwあり、もしくはwwwなしのどちらかに統一する必要があります。もし検索エンジンに両方認識されてしまった場合には上記のように設定します。

トップページのURLを「/index.html」ではなく「/」に統一したい

  • 仕様
    http://example.com/index.html ⇒ http://www.example.com/
    「/index.html」でアクセスがあったら、「/」に301リダイレクトさせる
  • サンプルコード
    RewriteRule ^index.html$ http://www.example.com/ [R=301,L]

こちらもURLの正規化で説明したケースです。検索エンジンに「/index.html」のURLがインデックスされている以上、301リダイレクトを行います。Apache2.x系のみ動作するため注意が必要です。

特集ページなどをディレクトリ単位で移動したい

  • 仕様
    http://example.com/special/* ⇒ http://example.com/s/*
  • サンプルコード
    RewriteRule ^special/(.*)$ /s/$1 [L]

あるディレクトリを同一ドメイン名の別のディレクトリへ引越しする必要がある場合です。検索エンジンにインデックスされているのであれば、URLの永続化の観点からリライトで対応することも可能です。「(.*)」で、special以下のすべての条件に一致させ、「$1」で後方参照します。これはリライト条件なので、301リダイレクトは設定しません。

ブログ記事に付けられる番号パラメータのURLを静的URLでアクセスできるようにしたい

  • 仕様
    http://example.com/post/{記事番号}/ ⇒ http://example.com/post.php?no={記事番号}
  • サンプルコード
    RewriteRule ^post/(.*)/$ /post.php?no=$1 [L]

ブログやCMSなど、記事を投稿するごとに番号が振られるシステムを利用している場合の、記事ページに自動的に付加されるパラメータを擬似静的化します。見た目は静的なURLですが、裏ではpost.phpというプログラムにパラメータを渡して処理しています。

◇◇◇

いかがだったでしょうか。エンジニアであれば正規表現をうまく活用して、適切な処理を心がけたいものです。

tweet26このエントリーをはてなブックマークに追加
日本赤十字社 東日本大震災 義援金募集
Web担メルマガでラクラク情報ライフを
注目記事が毎週手もとに届いて見逃さない
要チェックのセミナー情報もゲットできる
編集長コラムを一足先に読める
―― 10万人が読んでいる、Web担必読メルマガです

今日の用語

WOMMA
米国クチコミマーケティング協会。2004年に設立された米国のクチコミマーケティン ... →用語集へ

連載/特集コーナーから探す

インフォメーション

Web担のメルマガを購読しませんか?
Web担の記事がコンパクトに毎週届くメールマガジン「Web担ウィークリー」は、10万人が読んでいる人気メルマガ。忙しいあなたの情報収集力をアップさせる強い味方で、お得な情報もいち早く入手できます。

Web担に広告を掲載しませんか?
購読者数10万人のメールマガジン広告をはじめとする広告サービスで、御社の認知向上やセミナー集客を強力にお手伝いいたします。

サイトマップ
RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]

GOLD SPONSOR
さくらインターネット株式会社株式会社KDDI ウェブコミュニケーションズ株式会社日本レジストリサービスHP Softwareトランスコスモス株式会社株式会社ハイパーボックスDomain Keeperアドビ システムズ 株式会社
SPONSOR
株式会社キノトロープ株式会社アイレップ株式会社ニューズ・ツー・ユーシックス・アパート株式会社ウェブアンテナ株式会社サイバーエージェント富士通株式会社SitecoreYahoo!プロモーション広告Oracle