Condividi tramite


サンマルイチ・リダイレクト

"サンマルイチ" という字面から思わず "人間発電所 ブルーノ・サンマルチノ"  を連想された方、がっかりさせてすみません。

今回のネタは、前述の往年のプロレスラーに関するものではなく、HTTP 301 Moved Permanently を返すリダイレクトについてです。

ASP.NET4 では、RedirectPermanent メソッドを使用して HTTP 301 リダイレクトを行うことができるようになりました。

今までの ASP.NET にも、ASP にさかのぼる古(いにしえ) の時代からリダイレクト処理に使用されている伝統的な Response.Redirect メソッドというものがありますが、この Response.Redirect メソッドの処理でクライアントに返されるのは HTTP 302 です。

HTTP 302 の意味するところは、HTTP 1.0 では、Moved Temporarily (一時的な移動)、 HTTP 1.1 ではFound  (要求されたコンテンツがべつの URL に見つかった) ということになります。

つまりは、いずれも "いま、この URL に要求されたコンテンツはの一時的にアクセスできない状態だけれども、URL 自体は変わっていないので次にアクセスする際も、この URL に来てくださいよ" 的な意味合いになっています。

この動作は、Web アプリケーションの機能内でリクエストをハンドリングする等の処理においては申し分ないものです。

しかし、Web サイトとしての使用を考えると十分ではありません。

たとえば、Web サイトが移転して URL が変更になった場合、閲覧ユーザーの誘導を Response.Redirect (HTTP 302) や <meta> タグの refresh を使用して行うケースがありますが、SEO (検索エンジン最適化) 的観点からは、これらはお勧めできません。

上記の処理では "Web サイトが引っ越しましたよ" という情報が、サーチエンジンのインデックスを作成するクローラーに伝わりません。

なぜならば HTTP 302 のリダイレクトが示しているのは 、"コンテンツの一時的な移動" であり、<meta> タグにおいては HTTP 200 (正常) を示すのみだからです。

結果、検索エンジンの検索結果にはあいかわらず古い URL がリンクされたままとなり、新しい URL の順位はなかなか上昇していきません。

また、新しい URL が徐々に周囲に認知されはじめ、他のコンテツンからリングが張りなおされる過程では、インバウンドリンク数や、検索結果のクリック数が、 2 つの URL に分散するため、せっかくの検索結果の順位上昇の機会を逃してしまいます。

こういった事態を避けるため、検索エンジンのクローラーに対し、Web サイトが引っ越したことを正しく通知するには、HTTP 301 リダイレクト、つまりは ASP.NET4 では RedirectPermanentメソッドを使用します。

クローラーは、Web サーバーから HTTP 301 Moved Permanently を受け取ると、サーチエンジンの検索結果に使用される URL を移転先の新しい URL で更新します。

これにより、Web サイト移転時の SEO が達成できます。また、検索結果の正しい URL から直接 Web サイトに接続することができるので、不要なラウンドトリップをなくすことができます。

上記では Web サイトの移転を例にしましたが、https://www.contoso.com と https://contoso.com のように 2 つの URL から単一のサイトを単純にアクセス可能としている場合も同様の状況が発生しています。

この場合は、どちらか一方の URL を正式なものとして、正式でない URL では HTTP 301 リダイレクトで、正式な URL に誘導することをお勧めします。

 

IIS7 での HTTP 301 リダイレクトを設定するには

当然といえば当然ですが、ASP.NET4 を使用しなくても IIS7 の設定で HTTP 301 リダイレクトを行うように設定することができます。

IIS7 でリダイレクト処理を行うには、Web サーバーの役割追加ので "HTTP リダイレクト" を追加しておく必要があります。

手順

  1. インターネット インフォメーション サービスマネージャー (以降、"IIS 管理ツール") を起動します。

  2. 画面左のツーリービューから、目的の Web サイト、あるいは仮想ディレクトリを選択します。

  3. [機能ビュー] で [HTTP リダイレクト] のアイコンをダブルクリックします。

  4. [HTTP リダイレクト] の設定画面が表示されるので、[このリダイレクト先に要求をリダイレクト] チェックボックスにチェックをつけ、下のテキストボックスにリダイレクト先の URL を記述します。

  5. 同画面、[リダイレクト動作]囲み内の [状態コード] ドロップダウンボックスをクリックし、 "永続的(301)" を選択して、画面右の [操作] パネルで [適用] をクリックします。

以上で IIS7 の HTTP301 リダイレクトの設定は完了です。

Web サイト/ページの URL 変更の際のリダイレクトに HTTP 301 を使用することは、Yahoo! さんや、googleさんでも推奨されています。

Yahoo! サイト管理者向けヘルプ
Google ウェブマスター向けヘルプ

というわけで、Web サイトを移転した際にはサンマルチノ、違った、サンマルイチ・リダイレクトをお使いいただければと思います。

では。

Real Time Analytics

Clicky