.htaccessファイルを使って自動転送(リダイレクト)する方法

「.htaccess」ファイルで一括転送

「.htaccess」ファイルで一括転送

まずは、たった1ファイルを設置するだけで、ウェブサイト全体を一括転送(リダイレクト)させられる、「.htaccess」ファイルを活用する方法をご紹介いたします。

※「.htaccess」ファイルは、転送・認証・制限などの特殊な機能を実現できる(ウェブサーバの)設定ファイルです。このファイルの作成方法は、記事「.htaccessファイルの書き方と設置方法」で解説しています。本記事では、作成方法は知っていることを前提にしていますので、必要であればそちらの解説記事も併せてご参照下さい。

このページでご紹介する方法は、次の2つです。 目的に合わせて選択して下さい。
 

「.htaccess」のリダイレクト機能で、一括自動転送

「.htaccess」ファイルを使って自動転送(リダイレクト)するのは、とても簡単です。以下の書式を使って1行を記述するだけです。

恒久的に移転する場合の自動転送方法:
Redirect permanent [転送元] [転送先]
一時的に移転する場合の自動転送方法:
Redirect temp [転送元] [転送先]
どちらも、アクセスされた瞬間に自動転送されることに変わりありません。また、転送元のURLがブラウザの履歴に残らない点も同じです。

両者の違いは、(ブラウザなどに)通知される転送理由(HTTPステータスコード)が、前者では「恒久的な移動」で、後者では「一時的な移動」だという点です。 ブラウザの動作はどちらも同じですが、検索サイトのデータベースへの登録には影響する可能性があります。「ずっと移転する」(=転送URLを登録して欲しい)なら前者を、「今だけ移転する」(=転送URLを登録して欲しい)なら後者を使いましょう。

記述例1. サイト全体を移転する場合:
例えば、現在のウェブサイトへの全アクセスを、新サイト http://allabout.co.jp/ へ自動移動させたい場合は、以下のように記述します。
Redirect permanent / http://allabout.co.jp/
この場合は、転送元が「/」で転送先が「http://allabout.co.jp/」です。上記の1行を書くだけで、トップページだけではなく、旧サイトへのあらゆるアクセスがすべて新サイトへ転送されます。例えば、現在のウェブサイトが http://www.example.com/ であれば、以下のような動作になります。
  • http://www.example.com/about.php へのアクセスは、
    → http://allabout.co.jp/about.php に自動転送されます。
  • http://www.example.com/grape/juice.html へのアクセスは、
    → http://allabout.co.jp/grape/juice.html に自動転送されます。

記述例2. 一部のコーナーだけを移転する場合:
現在のウェブサイトの1コーナー http://www.example.com/corner/ だけへのアクセスを、別サイト http://allabout.co.jp/square/ へ移動させたい場合は、以下のように記述します。
Redirect permanent /corner/ http://allabout.co.jp/square/
この場合は、転送元が「/corner/」で転送先が「http://allabout.co.jp/square/」です。指定のディレクトリ(ここでは「corner」)以下のすべてのアクセスが、新サイトへ転送されます。例えば、以下のような動作になります。
  • http://www.example.com/corner/orange.html へのアクセスは、
    → http://allabout.co.jp/square/orange.html に自動転送されます。
  • http://www.example.com/corner/help/faq/ へのアクセスは、
    → http://allabout.co.jp/square/help/faq/ に自動転送されます。
  • http://www.example.com/another/ へのアクセスは、転送されません。
 

「.htaccess」のエラーカスタマイズ機能で、移転メッセージを一括表示

先ほどの方法は、アクセスされた瞬間に自動転送が行われるため、ユーザは(ブラウザのアドレス欄を注視していない限り)転送された事実には気付きません。旧URLが使えなくなる予定なのであれば、自動転送の前に「移転した案内」を表示させる方が良いかもしれません。

ウェブサイト内の全ページに一括して移転案内を表示するには、「404 Not Found」エラーをカスタマイズして利用する方法が便利です。

Not Foundエラーで表示される内容を「移転案内」にする裏技
存在しないページを見ようとすると「404 Not Found」エラーが表示されます。このときに表示される内容は、「.htaccess」ファイルを使うことで自由にカスタマイズできます。All Aboutを含め、この方法を使って独自のエラーページを作っているウェブサイトは多数あります。
 
独自ページに置き換えた「404 Not Found」エラーメッセージの例

独自ページに置き換えた「404 Not Found」エラーメッセージの例


このエラー表示機能を利用することで、全ページに一括して同じ移転案内を表示できます。手順は、次の通りです。
 
  1. 移転案内を掲載したページを1つ用意 (moveinfo.htmlなど)
  2. 「404 Not Found」エラーの際にはそのページが表示されるよう.htaccessを記述
  3. サイト内の全ページを削除 (※一部だけを移転するなら、移転する分だけを削除)

上記のようにすると、(全ページが削除されているため)サイト内のどのURLにアクセスしても「404 Not Found」エラーが表示されるようになります。その「404 Not Found」エラーが「移転案内」になっているので、結果として、「サイト内のどのURLにアクセスしても移転案内が表示される」ことになります。

具体的な作業手順は以下の通りです。

1. 移転案内を掲載したページを1つ用意 (moveinfo.htmlなど)
例えば「moveinfo.html」などのファイル名で、移転案内を掲載したページを用意します。このファイルは、ウェブサイト内の最上階層(トップページがあるディレクトリ)にアップロードしておきます。

2. 「404 Not Found」エラーの際にはそのページが表示されるよう.htaccessを記述
「.htaccess」ファイルに、以下の1行を記述します。これは、404エラーが発生した際には最上階層にある「moveinfo.html」を表示させるようにする記述です。
ErrorDocument 404 /moveinfo.html
※「/moveinfo.html」の部分は、先ほど作成したファイル名を指定します。何でも好きな名称で構いません。先頭の「/」記号を忘れないよう注意して下さい。なお、最上階層以外のディレクトリ(フォルダ)に置いた場合は、ディレクトリ名も加える必要があります。ここでは絶対パスで記述する必要があり、相対パスで書いてはいけません。

3. 404エラーの表示確認
存在しないページをブラウザで表示させてみて下さい。そこで、通常の「404 Not Found」エラーメッセージではなく、移転案内を書いた独自ページ(moveinfo.html)が表示されればOKです。表示されない場合は、記事「Not Foundなど エラーメッセージを独自作成」の5ページ目にある「うまくいかない場合の原因と解決方法」をご参照下さい。

4. 全ページを削除
最後に、ウェブサーバ上にあるすべてのHTMLファイルを削除します。これによって、どのページにアクセスしようとしても「404 Not Found」エラーが出るようになります。つまり、どのページにアクセスしても、同じ移転案内が表示されるわけです。

自動移動機能を加えるには
上記の方法だと、全ページに一括して移転メッセージを表示できますが、その後の自動転送は行われません。メッセージを表示した後に自動転送を行いたい場合は、次のページ以降でご紹介する、HTMLやJavaScriptを使って自動転送する方法と組み合わせて下さい。

※次のページでご紹介する「HTMLのmeta要素を使う方法」だと、パス名(URLの構造)を維持した状態での移動ができません。パスを維持して転送したい場合は、最後のページでご紹介する「JavaScriptを使って自動転送する方法」と組み合わせて下さい。

それでは次に、HTMLのmeta要素を使って自動移動(リダイレクト)する方法をご紹介いたします。