mod_rewriteによるリダイレクト



mod_rewriteとは、URLの書き換えを主機能とするApacheウェブサーバーの一機能です。この指定方法の特徴は、“正規表現”と呼ばれる非常に高機能な読み替え指定を使用可能なことです。“正規表現”を学習すれば、高度な指定を容易に行えるようになります。

○用法1:動的ページを静的ページに見せる

以下の指定で、2)のURL へのアクセスを 1)のURLリダイレクトします。(正確には読み替え)

┌────────────────────────
│RewriteEngine on
│RewriteRule ^/cgi-bin/example/([0-9]+)/([0-9]+)\.html$ /cgi-bin/example.cgi?x=$1&y=$2 [L]
└────────────────────────

1) http://www.example.com/cgi-bin/example.cgi?x=1234&y=5678
2) http://www.example.com/cgi-bin/example/1234/5678.html

○用法2:サイト内でディレクトリ構造を変更した場合に従来と同じに見せる

以下の指定で、2)のURL へのアクセスを 1)のURLリダイレクトします。

┌────────────────────────
│RewriteEngine on
│RewriteRule ^/old/(.*)$ /new/$1 [R=301,L]
└────────────────────────

1) http://www.example.com/new/(自由なURL)
2) http://www.example.com/old/(上と同じ)

○用法3:ドメイン移転

以下の指定で、自ドメインへのアクセスを http://www.example.com/ にリダイレクトします。

┌────────────────────────
│RewriteEngine on
│RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
└────────────────────────

○用法4:www有無の対応

以下の指定で、http://example.com/ へのアクセスを http://www.example.com/ にリダイレクトします。

┌────────────────────────
│RewriteEngine on
│RewriteCond %{HTTP_HOST} ^example\.com
│RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
└────────────────────────

以下の指定で、http://www.example.com/ へのアクセスを http://example.com/ にリダイレクトします。

┌────────────────────────
│RewriteEngine on
│RewriteCond %{HTTP_HOST} ^www\.example\.com
│RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
└────────────────────────

***

用法2以降において右方に“R=301”が指定されていますが、その指定が「301 Moved Permanently(永久に移転)」を返した上で、リダイレクトさせる指定です。

この方法は、人がブラウザー操作をしたとき、何も気が付かない状態で移転先に接続されます。したがって、移転先で変更があったことを案内する必要があります。

この方法は、検索エンジンに対して移転を永久移転を明示します。そのため、大手検索エンジンにおいては、評価(バックリンク)も新たなドメインに引き継げます。

***

クエリー文字列中に「/」(スラッシュ)が含まれる場合、「AllowEncodedSlashes on」の指定が必要です。

┌────────────────────────
│AllowEncodedSlashes on
└────────────────────────

***

環境によって指定方法が異なる場合がありますので、詳細は使用環境をご確認ください。


※ 本資料(「SEOの施策(方法)とSEOツールの紹介」または「SEOの用語集」)の最終更新は2009年の夏です。 そのため一部にリンク切れや古い情報を含むことをご承知おきください。