<meta http-equiv="refresh" content="10;url=http://w3g.jp/new/">
これは、HTML文書の head要素内に meta要素の http-equiv属性の値に "refresh" を記述し、content属性で UA が文書を読み込んでから何秒後に指定の URI の文書を表示させるかを命令する設定です。これによって、別のリソース(情報資源)へと移動させるリダイレクト(ある URI から他の URI に転送させること)が可能になります。これはクライアントプルと呼ばれる技術ですが、この方法は移動を通知するページ数が多い場合には手間がかかり、実用的ではありません。そこで、ファイルが多数あるディレクトリごと移動した場合であっても、ユーザーが移動前のリソースの URI へアクセスすると自動的に移動後のリソースへと誘導することができる HTTPリダイレクトを紹介します。
Redirect permanent /old/ http://w3g.jp/new/
これは「old」というディレクトリ以下のファイルにアクセスがあった場合に、自動的に「new」というディレクトリ以下にある同じファイル名をもつファイルへと HTTPリダイレクトさせます。HTTPリダイレクトとは、ウェブブラウザや検索エンジンのロボットなどの UA がウェブサーバーに対してリソースを要求した場合に、指定の URI が別の URI に変更された事をウェブサーバーからの返答時に UA に通知する機能です。UA はウェブサーバから送られてきた「この URI は変更されました」というメッセージの通知を解釈して、リダイレクト先の URI をウェブサーバーにリクエスト(要求)しなおします。
ここでは Redirectディレクティブの permanentオプション(属性)を使っており、この設定では UA に 301 Moved Permanentlyステータスコードを返します。301 Moved Permanently とは、そのリソースが恒久的に別の場所へ移動したことを伝え、今後は移動先のリソースへと要求するように促します。移動先の URI は絶対URI(http:// からはじまる)で記述します。
たとえば、http://w3g.jp/old/a.html の URI にアクセスを要求した場合、UA はサーバーからファイルが移転したことの通知を受けて、http://w3g.jp/new/a.html の URI をウェブサーバーへと要求し、HTTP によって移動前のリソースの URI へのアクセスを自動的に移動後のリソースへとリダイレクトすることが可能です。ただし、同一サーバー内のファイルの移動を通知する際に、ディレクトリ名が重複する場合は注意が必要です。
Redirect permanent /old/ http://w3g.jp/new/old/
この例では、リダイレクト先の URI に転送元のディレクトリ名と同じ文字列が含まれているために無限ループ(循環)という事態に陥ります。このため同一サーバー内において HTTPリダイレクトを使用する場合は、転送先と転送元のディレクトリ名が被ることのないように注意してください。
HTTPリダイレクトは同一サーバー内のファイルだけでなく、別のウェブサーバーのファイルに移動したことを通知する場合にも有効です。
RedirectMatchディレクティブでは、通常の Redirectディレクティブに加えて正規表現を使った HTTPリダイレクトが可能です。たとえば、今まで HTMLファイル形式で作成していたものを、includeモジュールなどの使える PHP のファイルへと移し変えた場合を想定します。
RedirectMatch permanent (.*)¥.html$ http://w3g.jp$1.php
ここでは「(.*)¥.html$ http://w3g.jp$1.php」という記述を行うことで、移転前は URI の最後が ".html" であったファイルが要求された場合に ".html" に代わって ".php" の拡張子をもつファイルを要求するように設定しています。RedirectMatchディレクティブの後にある permanentオプション(属性)は、そのリソースが永久的に移動したことを示すステータスを返します(オプションは次の項目にまとめています)。このように正規表現を使うことで、ファイル名はそのままで拡張子だけを変えて移動先のリソースを要求することも可能です。
RedirectMatch permanent (.*)post(.*)¥.php$ http://w3g.jp/new/
上記の場合は、URI に"post" という文字列を含み、拡張子が ".php" であるファイルへとアクセスがあった場合に http://w3g.jp/new/ 以下へと HTTPリダイレクトを行う設定です。 このように正規表現のパターンマッチ(任意の文字列に文字列のパターンをマッチさせること)を使うことで特定のファイルだけを HTTPリダイレクトさせることも可能です。
我々人間はテキストで「このリソースは、こちらの URI へ移動しました」と通知されていれば、それを理解することができますが、ウェブブラウザや検索エンジンのロボットなどを含める UA に対してリソースが移動したことを知らせるには、HTTPリダイレクトを使って明示しなければなりません。HTTPリダイレクトには、恒久的にリソースが移転したことを示す 301 Moved Permanentlyステータスコードを返す permanentオプション以外にも、次のようなオプション(属性)があります。
RedirectRedirectディレクティブに tempオプションを指定した場合と同じ 302 Moved Temporarilyステータスコードを返す。オプションをつける場合は permanent, temp, seeother, gone の4つがある。Redirect permanent301 Moved Permanentlyステータスコードを返す。要求されたリソースが、永久(恒久的)に別の場所へ移動したことを伝え、今後はそちらをリクエスト(要求)するように UA へ促す。Redirect tempRedirectディレクティブの初期値。302 Moved Temporarilyステータスコードを返す。要求されたリソースが、一時的に指定の場所へ移動していることを UA に伝える。Redirect seeother303 See Otherステータスコードを返す。要求されたリソースが他の別のリソースで置き換えられたことを UA に伝える。Redirect gone410 Goneステータスコードを返す。要求されたリソースが永久に削除されたことを UA に伝える。goneオプションの場合は、値に URI を記述してはいけない(記述する必要がない)。さらに、Redirectディレクティブのオプションを指定することなく同じステータスコードを返すディレクティブもあります。
RedirectPermanentRedirectディレクティブの permanentオプションを指定した場合と同じ、301 Moved Permanentlyステータスコードを返す。要求されたリソースが、永久(恒久的)に別の場所へ移動したことを伝え、今後はそちらへリクエストするよう UA に促す。RedirectTempRedirectディレクティブ、または Redirectディレクティブの tempオプションを指定した場合と同じ、302 Moved Temporarilyステータスコードを返す。要求されたリソースが、一時的に指定の場所へ移動していることを UA に伝える。この項目に「HTTPリダイレクトは SEO にも有効」とつけたのは、これらはウェブサイトの管理者として是非知っておきたい知識だからです。Google や Yahoo! などの検索エンジンのロボットにおいて移動先のリソースの URI を登録する場合に、ガイドラインで推奨されている手法が、リソースが恒久的に別の場所へ移動したことを伝え、今後は移動先のリソースへと要求するように促す 301 Moved Permanentlyステータスコードを返す Redirectディレクティブの permanentオプション、または RedirectPermanentディレクティブです。この方法を使えば、たとえ URI が変わっても、もとの URI に張られていたリンクなどのリンク元情報を新しい URI に継承させることもできます。
このように SEO の点からも HTML文書などのリソースを移動させた場合には、meta要素を使ったクライアントプルによるリダイレクトではなく、ウェブブラウザや検索エンジンロボット(クローラー)などを含めた UA にリソースが移動したことを明示できる HTTPリダイレクトを使うようにしましょう。また、その際に各検索エンジンのガイドラインで推奨されている 301 Moved Permanentlyステータスコードを返すようにしておくのが最適な設定です。302 Moved Temporarilyステータスコードも同じようなものですが、その微妙な違いは最新版の URI が常に変化しており、移動したリソースが恒久的に固定された URI ではない場合などに適しているといえます。
http://w3g.jp/others/htaccess/redirect実績:大阪学院 入試サイト New! / 三田市民病院 / 神戸女学院大学 入試サイト / 釣りサンデー