諸他の事情によりホームページを移転する際、新しいページへ自動的に飛ぶようにするのは大事です。いきなり無くなると、見つけるのが一苦労ですから。その手順を移転歴2回の私が解説したいと思います。
移転通知用のページを表示させる
さて、移転する際、まず考えるのがどこに移転通知用のページを作るかです。それぞれのファイルをそのままにしておき、一部のファイル(表紙や各メニューなど)に移転先を書いてもいいのですが、それだと問題があります。
それは、相変わらずそのファイルが存在するため、検索エンジンのロボットがそのファイルを見失うことが無く、検索エンジンに登録されっぱなしになってしまう事です。そのため、相変わらず古いページを見る人が沢山出てきます。出来ることなら移転先(つまり最新のページ)を見てもらいたい物。
そこで、まず移転が完全に完了したら、古いページをすべて削除します。次に、移転先のファイルを作成します。一番てっとり早いのが、http://www.○○○.ne.jp/~□□/index.htmlに作る、つまり、一番表紙にそれを持ってくるという事です。まず表紙から来る人が一番多いでしょうから、その人たちにはこれでOK。
次に、各ページへ直接リンクしてきた人をどうするか、特に検索エンジン経由だと多いですよね。その場合、すでにファイルがありませんから、「HTTP 404・ファイルがありません」とエラー画面が表示されるはずです。そこで、このエラー画面をカスタマイズすることにします。
まず、一番上のディレクトリ(public_htmlなど)に.htaccess(ドットが頭に必要)と言う名前のファイルを設置します。これはホームページ用の設定ファイルです。そして、その中に以下の一行を記入します。
ErrorDocument 404 /~□□/index.html
これは、「HTTP 404エラーの時は、このファイルを表示させなさい」と言う設定です。書き方は、その表示させたいファイルのURL(http://www.○○○.ne.jp/~□□/index.html)から先頭のhttp://www.○○○.ne.jpを抜いただけ。
この設定により、もし削除したファイルを指定した場合でも、きちんと移転通知用のページを表示する事ができます。これで、ページの表示はOK。
ジャンプさせるURLを調べる方法
さて、次は移転通知用のページの書き方です。定番は、METAタグを使ってジャンプさせる方法でしょうか。これは、ファイルの<HEAD></HEAD>の間に、以下のような一文を加えると言うものです。
<META HTTP-EQUIV=”Refresh” CONTENT=”5:URL=新しいURL”>
新しいURLの部分に自動でジャンプさせたいページのURLを記入します。その前の5というのは5秒後と言う意味で、秒単位で変更できます。自動でジャンプしない可能性もあるので、リンクも記述しておけばOK。
さて、ここでジャンプさせるURLが問題になります。普通は新しいホームページの表紙に飛ばす、まぁこれでも十分なんですけど、直接ファイルを指定してきた場合、表紙からそのファイルまでたどり着く必要があります。これって結構大変なんですよね。それに、ディレクトリの構成は変えてない事も多いですから、URLの頭の部分を変えるだけで、移転先のそのファイルへのURLとなります。
そこで、JavaScriptを用いて、見たいファイルへ直接ジャンプするようにしてみました。例として、
旧URL:http://www.mars.dti.jp/~dieen/pc/mypc_spec.htm
新URL:http://www.dieen.net/pc/mypc_spec.html
とします。
最初に、ブラウザからhttp://www.mars.dti.ne.jp/~dieen/pc/mypc_spec.htmにアクセスすると、すでにファイルは削除されていますから、404エラーとなり、移転通知用のページが表示されます。
そこで、ジャンプさせるURLを調べます。JavaScriptを用いています。
<SCRIPT language=”JavaScript”> <!– NewURL=”http://www.dieen.net/”; | 入れ替えたいURLを記入します。つまりhttp://www.mars.dti.jp/~dieen/ →http://www.dieen.net/としたい訳です。 |
Path=location.pathname; | ここで、パス名を取り込みます。この場合は、/~dieen/pc/mypc_spec.htmlとなります。 |
data=Path.split(“/”); | これは、“/”で文字列を切り分けて、配列に格納しています。 data[0]= “” data[1]=”~dieen“ data[2]=”pc“ data[3]=”mypc_spec.html“ となります。 |
i=0; while(data[i]!=null){ i++; } i–; | ここで、配列の数を求めています。今回はi=3です。 |
for(j=2 ; j<i ; j++){ NewURL=NewURL+data[j]+”/”; } | ここで、フォルダ名をそれぞれ設定していきます。変数jが2から始まっているのは、data[0],data[1]は~dieenの部分なので、通常は不要です。終了条件をj<iとして、ファイル名は除いています。 |
if(data[i]!=0){ File=data[i].split(“.”); if(File[0].indexOf(“index”)!=-1){ File[1]=”.shtml”; } else if(File[1].indexOf(“htm”)!=-1){ File[1]=”.html”; } else { File[1]=”.”+File[1]; } NewURL=NewURL+File[0]+File[1]; } –> </SCRIPT> | もし、ファイル名が未入力の場合は、これ以上調べる必要がありません。 また、私の場合、ファイル名がindex*.*の場合は拡張子をshtmlにしていて、それ以外はhtmlにしているのですが、以前はhtmにしていました。そこで、“.”でファイル名を切り分けています。今回は、 ファイル名がindex*.*なら拡張子はshtmlとなり、ファイル名が*.htm*なら拡張子はhtml、それ以外は変更せずにそのまま繋げる…という処理をしています。 それぞれ条件を掛け合わせて、http://www.dieen.net/pc/mypc_spec.html |
次に、自動でジャンプするJavaScriptを書きます。
<SCRIPT language=”JavaScript”> <!– setTimeout(“window.location=NewURL”,10000); –> </SCRIPT> | このスクリプトで、10秒後にNewURLに自動ジャンプします。ミリ秒単位で指定します。 |
あと、念のために、リンクタグもJavaScriptで表示させておきます。
<SCRIPT language=”JavaScript”> <!– document.write(“<A href='”+NewURL+”‘>”+NewURL+”</A>”); –> </SCRIPT> | これで、NewURLへのリンクを表示します。 |
スクリプトを埋め込み
以上のスクリプトを埋め込むと、ソースファイルは以下のようになります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <SCRIPT language="JavaScript"> <!-- NewURL="http://www.dieen.net/"; Path=location.pathname; data=Path.split("/"); i=0; while(data[i]!=null){ i++; } i--; for(j=2 ; j<i ; j++){ NewURL=NewURL+data[j]+"/"; } if(data[i]!=0){ File=data[i].split("."); if(File[0].indexOf("index")!=-1){ File[1]=".shtml"; } else if(File[1].indexOf("htm")!=-1){ File[1]=".html"; } else { File[1]="."+File[1]; } NewURL=NewURL+File[0]+File[1]; } --> </SCRIPT><TITLE>移転のお知らせ</TITLE> <BASE target="_self"> </HEAD> <BODY> <SCRIPT language="JavaScript"> <!-- setTimeout("window.location=NewURL",10000); --> </SCRIPT> <H2 align="center">移転のお知らせ</H2> <HR align="center" width="95%" size="5"> <BLOCKQUOTE> 当ホームページは、下記URLに移転しました。<BR> <B>10秒後</B>に移動します。<BR> <BR> 移動しない場合は、お手数ですが、下記のURLを選択してくださいませ。</BLOCKQUOTE> <P align="center"><FONT SIZE="+1"> <SCRIPT language="JavaScript"> <!-- document.write("<A href='"+NewURL+"'>"+NewURL+"</A>"); --> </SCRIPT> </FONT></P> </BODY> </HTML>
この通りになります。8行目のNewURL=”http://www.dieen.net/“;の部分を変更すれば、大抵の場合には対応できるんじゃないかな?。