記事本文
301 Moved Permanently
昨日お伝えした URI 変更の件に伴い、旧 URI から新 URI にリダイレクトするようにしました。
今回のケースはリソース自体の移動に伴うものなので、 301 Moved Permanently という HTTP ステータスをブラウザに渡す必要があります。
ディレクトリを丸ごとリダイレクトする場合
例えば、 http://hxxk.jp/mt/ 以下のリソースを、ディレクトリ構造を維持したまま http://hxxk.jp/ にリダイレクトしたい場合、 .htaccess の記述は次のようになります。
Redirect permanent /mt/ http://hxxk.jp/
こう記述していれば、 http://hxxk.jp/mt/ 以下の各記事は次のようにリダイレクトされます。
- http://hxxk.jp/mt/2005/05/30/0149 → http://hxxk.jp/2005/05/30/0149
- http://hxxk.jp/mt/2005/05/30/ → http://hxxk.jp/2005/05/30/
- http://hxxk.jp/mt/2005/05/ → http://hxxk.jp/2005/05/
- http://hxxk.jp/mt/2005/ → http://hxxk.jp/2005/
- http://hxxk.jp/mt/ → http://hxxk.jp/
ディレクトリ構造が全く変わらない場合、例えばドメインを新たに取得してそちらに移行するような場合はこの 1 行の記述だけで充分でしょう。
一部のリソースにおいて規則性によらない URI 変更が行われる場合
これは、今回の私のようなケースです。 カテゴリを撤廃してキーワードによる分類を行っていますが、それによって行われる URI の変更に規則性はありません。 例えば、 http://hxxk.jp/mt/information/ というカテゴリアーカイブがあったのですが、これに当たる新しいリソースは http://hxxk.jp/keyword/%A4%AA%C3%CE%A4%E9%A4%BB という URI になります。
これを前項の記述でリダイレクトしてしまうと、 http://hxxk.jp/mt/information/ が http://hxxk.jp/information/ にリダイレクトされ、そして既にカテゴリアーカイブは撤廃されているため 404 Not Found となってしまいます。 そこで、基本的には規則性による URI の移動だけれど一部その規則性から外れるようなケースでは、次のように .htaccess を記述する必要があります。
Redirect permanent /mt/information/ http://hxxk.jp/keyword/%A4%AA%C3%CE%A4%E9%A4%BB
Redirect permanent /mt/ http://hxxk.jp/
規則的なリダイレクトより先に、こうした個別のリダイレクトの記述を配置することで、規則的な URI な変更の適用を免れることができます。 ( 順番を逆にしてしまうと、規則性に従って http://hxxk.jp/information/ にリダイレクトされ、 404 Not Found になります。 )
実際のリダイレクト結果
これらを踏まえ、できる限り「リニューアルによる 404 Not Found 」の発生が無くなるように .htaccess を設定しました。 しかし、もしかしたら漏れがあるかもしれません。 その場合は遠慮なくご指摘をお願いします。 なお、次のようなリダイレクトを行っています。
- 個別記事および時系列アーカイブ
-
記事の作成日時を基に URI を割り当てていますので、基本的な部分は変わりません。 ドメインの直下にリダイレクトするようにしています。
- カテゴリアーカイブ
-
元のカテゴリを基本に、それぞれのキーワード一覧にリダイレクトしています。 なお、適切なキーワードが無い漠然としたカテゴリは、キーワードページのトップにリダイレクトしています。
- テンプレートのサンプル
-
Template hxxks -standard- のように、 Movable Type のテンプレート配布のサンプルページは、 http://hxxk.jp/mt/ 以下にあったため、こちらも htp://hxxk.jp/ 以下に配置されるようにリダイレクトしています。

