.htaccessで古いURLを新しいURLにリダイレクト(転送)するようにした場合、古いエントリファイルは不要になります。しかし、エントリ数が多い場合、いちいち/2005/12/post_27.phpのようなファイルを1個1個FTPソフトで選んで削除していては時間もかかるし、間違って消してしまう可能性だってあります。汗2

そこで!もしLINUXのWEBサーバにTELNETやSSHでログインできる人限定ですが、簡単に、安全に、一括削除できる方法をご紹介します。まず、前提として、既に.htaccessファイルにより、旧URLを新URLに転送する設定が完了して、動作確認(正しく転送されているかどうかをブラウザのURLの欄を見て確認)できているものとします。
できていない場合は、この方法で.htaccessファイルをMovableTypeで作成して、動作確認まで行っておいて下さい。

簡単一括削除手順

①TELNETかSSHでサーバにログイン

②削除対象ファイルの抽出
 Redirect Permanentでは常に以下の書式となる。

Redirect permanent /2005/12/old.php http://kazuizm.com/2005/12/15-090809.php
”Redirect” ”Permanent” ”古いURLのドキュメントルートからのパス+ファイル名” ”新しいURL”

 上記はスペースごとに区切って「” ”」で囲ってます。
つまり、スペースで区切られた3番目のフィールド「古いURLのドキュメントルートからのパス+ファイル名」がそのまま削除すればいいパス+ファイル名となります。素晴らしい。利用しない手はない音符

 ということでこの「3番目」のフィールドを抽出します。こちらで紹介したawkコマンドの登場です。(cutコマンドでもできますが)

[root@linux kazulog]# awk '/^Redirect/{print $3}' .htaccess
/index.html
/2005/12/post_30.php
/2005/12/post_29.php
/2005/12/new.php
/2005/12/post_28.php
/2005/12/etc.php
/2005/12/post_27.php
(以下略)

このコマンドの意味はというと、「Redirectで始まる行の3番目のフィールドを.htaccessファイルから抽出しなさい!」ってな感じです。
これをファイル削除コマンド「rm」に渡してやればいい(厳密には一番頭の「/」を削除する必要がありますが)わけですが、念のため本当に削除してしまって問題ないか確認したい場合は以下で。

④削除対象ファイルの確認
 以下コマンドを実行すれば「http://~」付きで出力されるのでブラウザにコピーペーストして、転送先のURLに自動変更されるか確認します。

[root@linux kazulog]# awk '/^Redirect/{print "http://kazuizm.com"$3 " -> "$4}' .htaccess | head
http://kazuizm.com/index.html -> http://kazuizm.com/index.php
http://kazuizm.com/2005/12/post_30.php -> http://kazuizm.com/2005/12/11-230056.php
http://kazuizm.com/2005/12/post_29.php -> http://kazuizm.com/2005/12/10-232105.php
http://kazuizm.com/2005/12/new.php -> http://kazuizm.com/2005/12/09-100300.php
http://kazuizm.com/2005/12/post_28.php -> http://kazuizm.com/2005/12/06-123615.php
http://kazuizm.com/2005/12/etc.php -> http://kazuizm.com/2005/12/04-140343.php
http://kazuizm.com/2005/12/post_27.php -> http://kazuizm.com/2005/12/04-122137.php
http://kazuizm.com/2005/12/post_26.php -> http://kazuizm.com/2005/12/03-232611.php
http://kazuizm.com/2005/12/post_25.php -> http://kazuizm.com/2005/12/01-230514.php

⑤削除実行
 いよいよ削除です。サクっと消しちゃいましょう。最初の「/」は不要なので、cutコマンドで2文字目以降を取り出してます。カレントディレクトリはMovableTypeのインストールディレクトリに変更しておいて下さい。要は、カレントディレクトリからの相対パス(例:2005/12/post_27.php)で削除するわけです。

[root@linux kazulog]# rm -rf `awk '/^Redirect/{print $3}' htaccess3 | cut -c2-`

⑥参考
 一気に削除するのが怖い場合は、一気に消すかわりにバックアップディレクトリに「移動」しておくこともできます。

[root@linux kazulog]# mkdir backup/
[root@linux kazulog]# mv `awk '{print $3}' htaccess3 | cut -c2-` backup/

かなり、確実で安全で早い方法だと思いますが、LINUX上でのrmコマンドの使い方は場合によっては非常に危険ですので念のため⑥の方法で実行したほうが無難っすね。



こちらもご一緒にどうぞ!