親切な「移転しました」を案内するperlスクリプト

昔、どこかで見かけたので誰かしらやっているだろうと思ったんだけど、見つからなかったから作った。参考文献にあるスクリプトを参考にしたものの、意図が違うようなので新しく作った。

使い方と動作

  1. 新サーバを確保する(FTPできるようにしておく)
  2. 旧サーバに404.cgiと.htaccessを仕込む
  3. 旧サーバから新サーバに必要なファイルを転送する
  4. 転送を確認したら旧サーバから転送済みファイルを削除する
  5. 削除されると404になる、すると.htaccessによって404.cgiが呼び出される
  6. 404.cgiは何が無かったのかを考えて、”新しい場所を案内”する
    (たんに新URL移動した、というだけではユーザビリティがよくない)
  7. 必要があれば数秒後に新しいURLを読み込ませることができる
    (しかし、移転なので、ブックマークの変更などがあるだろうから、自動転送ではないほうが望ましいと考える)

※このプログラムは十分に理解してから使わないと、新旧サーバー管理者やネットワークトラフィックなどに迷惑を掛けることがあるので、注意すること。
※サイト管理者(=それなりの知識や技術を持っている)が使うものなので設置方法などは記載しない。

ダウンロード

サンプル.htaccess

DirectoryIndex 404.cgi
ErrorDocument 404 /404.cgi

スポンサードリンク

404.cgi

#!/usr/local/bin/perl##############################################################################
# サイト移転案内プログラム
##############################################################################
# License GPL
# Copyright 2008 CASEY
# History
# – 2008-12-10 Ver.0.01 初版作成

use strict;
use CGI::Carp qw(fatalsToBrowser);

# 引越し先の新URL(引数のない転送先URL)をここに設定(スラッシュなし)
my $URLnew = “http://foo.bar.jp”;
my $hikisuu = $ENV{‘REQUEST_URI’};;
my $URLmove = $URLnew . $hikisuu;
$|=1;

print “Content-Type: text/html; charset=Shift_JIS\n\n”;
print <<“END_HTML”;
<head>
<!– <meta http-equiv=”refresh” CONTENT=”10;URL=$URLmove”> //–>
<title>301 Moved Permanently</title>
</head>

<body>
<p>◆次の場所に移転した予\感がします<br />
<a href=”$URLmove” target=”_blank”>$URLmove</a></p>
</body>
</html>
END_HTML

exit;

__END__
sample .htaccess file
ErrorDocument 404 /404.cgi

 

参考文献

スポンサードリンク

コメント