.htaccess によるリダイレクト

Movable Type (MT) に限ったことではないが、PHPモジュール化やページ分割などのカスタマイズを行う場合は、テンプレートファイルの拡張子が .html から .php に変更となる。
MTでテンプレートの拡張子を変更すると、以降の再構築で生成されるページは.phpで新たに作られるが、これまで使っていた.htmlのファイルは、そのまま残ってしまう。 削除はされず、以後、更新されることもない。
同名のファイルがある場合Webサーバーは.htmlの方を返すので、本来のindex.phpではなくて古いままのindex.htmlが参照されてしまう。 あるいは、他サイトからそのファイルにリンクを貼っている場合は、デッドリンク(Error 404)になってしまう。
ブログ運用開始後に拡張子を変更した場合には、このような問題への対処が必要になる。

ここでは .htaccess を用いてリダイレクトすることによってデッドリンクを回避する方法を紹介する。
たとえば、
http://example.com/blog/archives.htmlが参照されるた時、
http://example.com/blog/archives.php
を返したいのであれば、

■例1 RedirectMatchを使用
パターンに合致したファイル名を「xxxxx.php」と読み替えてリダイレクトする。

RedirectMatch permanent (.*)\.html$ http://example.com$1.php

■例2 RedirectPermanentを使用

RedirectPermanent /blog/archives.html http://example.com/blog/archives.php

と.htaccessに指定することで解決できる。
しかしながら、Webサーバーから返されるステータス(301ステータスコード)によってリダイレクトされたことを認識できるので、SEO的には多用は避けたいものである。

タイトルとURLをコピーしました