ホームページの引っ越しスクリプト

.htaccessが使える場合

Redirectを使う

同じファイルが存在しているときは、リダイレクトで転送することができます。ブログなどを同じシステムで大量のページを転送させたいときに便利です。

例えば、http://www.hkd.cside.com/earlgrey/というURLをhttp://egt.tpot.tk/へ転送したい場合、

.htaccessに

Redirect permanent /earlgrey/ http://egt.tpot.tk/

と記述します。

ErrorDocumentを使う

システムを変更した場合、同じようなURLにならないことがあります。新しいサイトのトップページに転送できればよいのであれば、ErrorDocumentを使うといいでしょう。

.htaccessに

ErrorDocument 403 /フルパス/error.htm
ErrorDocument 404 /フルパス/error.htm

と、それに対応したerror.htmに

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
<meta http-equiv="content-language" content="ja" />
<meta name="robots" content="index,follow" />
<title>PAGETITLE</title>
<META HTTP-EQUIV="refresh" CONTENT="10; url=NEWPAGE">
</head>
<body>
 
<H1>PAGETITLE</H1>
<center>
このサイトは移動しました。<br>
<br>
<a href="NEWPAGE" target="_top">NEWPAGE</a><br><br>
10秒後に自動的にジャンプします。<br><br>
<a href="javascript:history.back()">戻る</a>
 
</center>
 
</body>
</html>

と書いておけば、新しいサイトのアドレスにジャンプします。

つまり、ページがないというエラーページをジャンプページに利用するというものです。もちろん、古いページのファイルはすべて削除しておきます。

.htaccessが使えない、または、個別のページにジャンプさせたい

.htaccessが使えない場合は、一つ一つのHTMLファイルに上記のerror.htmの内容を書き込んだファイルを用意しなければなりません。

また、.htaccessが使えるとしても、新しいサイトの同じファイルにジャンプしてほしいときは、一つ一つのファイルにジャンプ先のURLを記述しなければなりません。 これをスクリプトで一括処理したいと思います。

  1. ディレクトリ構造をそのままに/tmp/htmlにコピーします。
    • 内容は書き換わるので、元のファイルで実行しないでください。
    • なお、HTMLファイル以外は削除しておいてください。
  2. jump_source.htmを用意します。
    • 内容は、上記のerror.htmと同じものです。
  3. 次に下記のスクリプトを用意します。make_jump_page.shとします。
    #!/bin/bash
     
    CONVERT_HOME="/tmp/html"
    SOURCE_FILE="/tmp/jump_source.htm"
    NEW_SITE_URL="http://www.xxxx.com"
     
    for f in `find $CONVERT_HOME`
    do
      if [ -f "$f" ] ; then
        echo $f
        cp -f $SOURCE_FILE $f
        sed -e "s#NEWPAGE#$f#g" "$f" > "$f"_tmp
        mv "$f"_tmp "$f"
        sed -e "s#$CONVERT_HOME#$NEW_SITE_URL#g" "$f" > "$f"_tmp
        mv "$f"_tmp "$f"
      fi
    done
     
    exit 0
  4. これを実行すると/tmp/html以下のファイルの内容がjump_source.htmの内容になります。それだけではなく、NEWPAGEという文字列を新しいサイトのURLに置き換えます。
  5. 新しく書き換えたファイルをそのまま古いサイトにアップロードし、アクセスすると自動的に新しいサイトの同じファイルにアクセスするようになります。画像等は削除してしまいます。

PHPで書かれている場合

PHPの場合は、受け取ったパラメタを新しいサイトの同じファイルに受け取らせる。

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
<meta http-equiv="content-language" content="ja" />
<meta name="robots" content="index,follow" />
<title>PAGETITLE</title>
<?php 
$getdata = $_SERVER['QUERY_STRING'];
print <<<END
<META HTTP-EQUIV="refresh" CONTENT="10; url=http://www.xxxx.com/yyy.php?$getdata">
</head><body>
<H1>PAGETITLE</H1>
<center>
このサイトは移動しました。<br>
<br>
<a href="http://www.xxxx.com/yyy.php?$getdata">http://www.xxxx.com/yyy.php?$getdata</a><br><br>
10秒後に自動的にジャンプします。<br><br>
<a href="javascript:history.back()">戻る</a>
</center>
END;
?> 
</body></html>