htaccess解説/リダイレクト(ページの転送)
htaccessのリダイレクト機能を使用すれば、サーバーの移転やページ構成の変更などを行った後に、元のページへのアクセスを新しいページに自動転送することができます。 また、検索エンジンに対しても”引越し”の通知を行うことができます。
1.サーバー移転などサイト全体のリダイレクト(転送)
サイトの引越しなどで、サイト全体を今までとは違サーバーで稼働させる場合は、サイト全体のリダイレクト機能が使用できます。
(例)
現在のサーバーURL(転送元) |
http://www.example.jp/ |
新しいサーバーURL(転送先) |
http://example.com/ |
「.htaccess」ファイル
Redirect permanent / http://example.com/
動作 |
「http://www.example.jp/info/map.html」にアクセスがあった場合、
「http://example.com/info/map.html」にリダイレクト(転送)されます。 |
|
2.ディレクトリ単位のリダイレクト(転送)
ディレクトリ単位のページ移動などがある場合、ディレクトリ単位でリダイレクトの設定が可能です。サブディレクトリもそのままの階層のままリダイレクトが行われます。
(例)
現在のサーバーURL(転送元) |
http://www.example.jp/shop/ |
新しいサーバーURL(転送先) |
http://example.com/japan/shopping/ |
「.htaccess」ファイル
Redirect permanent /shop/ http://example.com/japan/shopping/
動作 |
「http://www.example.jp/shop/tokyo/map.html」にアクセスがあった場合、「http://example.com/japan/shopping/tokyo/map.html」にリダイレクト(転送)されます。 |
|
3.全てトップページへのリダイレクト(転送)
パターンマッチを利用すると、上記の単純なリダイレクトの他に全ての転送先を1個所にしたり、拡張子により転送要否を決定したりすることができます。 転送元にアクセスがあった場合、全て転送先トップページにリダイレクトする。
(例)
現在のサーバーURL(転送元) |
http://www.example.jp/ |
新しいサーバーURL(転送先) |
http://example.com/ |
「.htaccess」ファイル
RedirectMatch 301 .* http://example.com/index.html
動作 |
「http://www.example.jp/info/map.html」や「http://www.example.jp/」など指定された転送元より下の階層にアクセスがあった場合、全てのアクセスを「http://.example.com/」にリダイレクト(転送)することができます。 |
|
4.特定ファイル(拡張子)のみリダイレクト(転送)
サーバー内の特定ファイルのみすべてリダイレクトすることができます。たとえば、画像データが多くなり容量オーバーとなる場合、画像のみ他のサーバーに移動し、htmlは変更せずにリダイレクトで対応することもできます。
(例)
現在のサーバーURL(転送元) |
http://www.example.jp/ |
新しいサーバーURL(転送先) |
http://example.com/ |
「.htaccess」ファイル
RedirectMatch 301 (.*)\.jpg$ http://example.com$1.jpg
RedirectMatch 301 (.*)\.gif$ http://example.com$1.gif
動作 |
「http://www.example.jp/info/map.jpg」にアクセスがあった場合、「http://.example.com/info/map.jpg」にリダイレクト(転送)されます。 |
|
「.htaccess」ファイル
Redirect permanent / http://example.com/
Redirect temp /shop/ http://example.com/japan/shopping/ RedirectMatch 301 .* http://example.com/index.html
RedirectMatch 302 \/image\/(.*)\.jpg$ http://example.com$1.jpg
Redirect aaa bbb ccc
RedirectMatch xxx yyy zzz
上記htaccessファイルには2種類のリダイレクトが混在しています。
※上記構文は説明のため矛盾が生じています。
構文 |
意味 |
Redirect |
リダイレクトの設定であることを表す |
aaa (上記の青文字) |
以下の指定が可能です。
「permanent」 301 Moved Permanently (完全に移動した)
「temp」 302 Moved Temporarily (一時的に移動した) 「seeother」303 See Other (他の場所にある) 「gone」410 Gone (削除されている) 一般的には、
ページを移動した場合は「permanent」を使用(注1)
メンテナンスなどで一時的に移動したときは「temp」を使用(注1) |
bbb (上記の青文字) |
サーバー内の転送元パス 「/」を指定した場合は、ルートを表します |
ccc (上記の青文字) |
転送先のURL |
RedirectMatch |
パターンマッチを使用したリダイレクトの設定であることを表す |
xxx (上記の青文字) |
リクエストに返すステータスコート 一般的には、 ページを移動した場合は「301」を使用(注1) メンテナンスなどで一時的に移動したときは「302」を使用(注1) |
yyy (上記の青文字) |
転送元の条件を正規表現で表す。 正規表現のエスケープが必要である。 「.*」は全ての意味となる |
zzz (上記の青文字) |
転送先のURL 「$1」は正規表現の置き換え文字となる。 たとえば、上記例では「http://.example.com/info/map.jpg」にアクセスがあった場合、「$1=/info/map」となる |
(注1)検索エンジンへの対応
- ステータスコード:301 「permanent」
検索エンジンに、ページが移転したこと知らせることができます。
既にyahooやGoogleなどの検索ページに登録がある場合、検索結果画面でも新しいページへのリンクに切り替わります。(一定時間掛る場合があります)
yahooのヘルプ:「検索結果のURLを変更したい」
googleのヘルプ:「サイト移転」
- ステータスコード:302 「temp」
検索エンジンは、一時的な移転と認識し、検索結果のリンクは切り替えません。
|
その他
|