301 Redirect
サイトの移動にともなう .htaccess の設定
はじめに
301リダイレクトとは、サイトの移設やURLの変更に際して、変更前のURLから変更後のURLへ、ユーザーを誘導する仕組みのことです。
参考:meta refresh
ページのリダイレクトには、meta refresh(メタリフレッシュ)を使う、というもっと簡単な方法もあります。サーチエンジンにサイトの移動を認識させるには、301リダイレクトを使うことが推奨されてます(Google)が、念の為、meta refresh によるサイト転送の方法を紹介します。
転送元(つまりもう古くなったページ)のHTML、<head>~</head>内にmeta要素を使って以下のように記述します。
<meta http-equiv="refresh" content="0;URL=http://example.com">
この記述ではページアクセスから 0 秒後に、example.com へ転送されます。
事例
古いサーバーに以下を index.html として置くと新しいURLに誘導できます。
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="utf-8"> <meta http-equiv="refresh" content="5;URL=http://example.com/"> <title>SamleSite</title> </head> <body> <center> <p>サイトを引っ越ししました。5秒で移動します。</p> <p>新しいURL:http://example.com/</p> </center> </body> </html>
付記:5行目部分の解説
content="5;URL=http://example.com/"
- 「5」 は自動転送までの時間です。速攻移動であれば 0 です。
- URL= の部分に移動先のアドレスを記載します。
301リダイレクト
301リダイレクトを利用するには
転送元のサーバーで、htaccessの利用が許可されている必要があります。
ちなみに、大学のサーバーの個人用ディレクトリはこれが認められていますので、試すことが可能です。
.htaccessファイルとは
.htaccess(エイチティアクセス)とは、 Apache(アパッチ)というWebサーバーソフトを制御する設定ファイルの1つで、このファイルに必要な記述を行うことで、例えば以下のようなアクセス設定をすることができます。
- 特定のディレクトリへのアクセス時にパスワードを要求したい
- 特定のデバイス以外からアクセスできないようにしたい
- サーバーの移転等、別のURLへの自動転送を行いたい
プレーンなテキストファイルとして存在するものなので、テキストエディタなどで記述して保存するだけです。
保存名に要注意
ファイル名の先頭が [ . ] のものは、ドットファイルと呼ばれ、これは隠しファイルの扱いになるので、不用意に保存するとファイル自体が見えなくなります。Windowsの場合は、フォルダ設定で「隠しファイルを表示」にすると見えますが、Macの場合は、ターミナルからコマンドを打って設定を変える必要があるなど、扱いが面倒です。よって、
htaccess で保存 > FTPアップロード > 名称に [.] をつける
とするほうがよいでしょう。
ただし、もちろんFTPクライアント上では、ファイルが見える(隠しファイルも表示する)設定になっていることが必要です。
.htaccessファイルを置く場所
- .htaccessファイルは、転送元のサーバーで、対象がその直下に見えるルートディレクトリーに置きます。
.htaccessファイルの書き方
たった1行ですが、テキストエディタ等で入力して保存します。
- 例1)
Redirect permanent / http://www.example.com/xxxxx/
現在のディレクトリ( / )以下へのアクセスが、www.example.comサーバーのディレクトリ xxxx 以下へ転送されます。 - 例2)
RedirectMatch 301 (.*) http://www.example.com/xxxxx/
現在のディレクトリ( / )内のすべてのページへのアクセスが、www.example.comサーバーのディレクトリ xxxx のトップへ転送されます。
便利なツール
- CMAN htaccessによるリダイレクト
このサイトは、転送のタイプ、転送元、転送先を指定することで、.htaccessファイルの記述を自動生成してくれます。便利です。
- ohotuku.jp リダイレクトチェック
旧サイトにアクセスして、これが正しくリダイレクトされているか、確認することができます。