いろいろ
Seize the day.
2007-05-05 [長年日記]
■ [blog] 移転先へのリンクを生成する ErrorDocument を作る
えーと,というわけで [2007-05-04],旧ドメインは更新を停止し,さらにコンテンツもばっさり消してしまいました.古いほうの RSS にアクセスしている方,大丈夫ですかね.とか書いても「いない人いますかー」みたいな虚しさが残るな.さて,旧ドメインのコンテンツを消す際,移転先 (このドメイン) へのリンク (「○○に移転しました」云々) を残しておきたいと思った.ページ数が少なければ,各ページに移転先を書いておくという古典的な方法でいける.問題はこのブログだ.Permalink だけで膨大な量があるし,クエリ入り URL まで含めたらお手上げだ.単にまとめてブログのトップページに飛ばす手もあるけど,それはちょっと不親切というものだ.
つーわけで,ErrorDocument を活用してやることにした.たぶん,よくやられてる方法なんだと思うし,もっと洗練された方法があったりするかも知れないけど.
まず .htaccess に
ErrorDocument 404 /file_not_found.cgiと書いておく.これで,存在しないページにアクセスがあったら 404 を返して file_not_found.cgi にリダイレクトする.
file_not_found.cgi は以下のようになっている (実際に使っているものには英語の注意書きも載っている).
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
print "<html><head>\n";
print "<title>Moved</title>";
print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-jp\">";
print "<link rel=stylesheet type=\"text/css\" href=\"http://nao.s164.xrea.com/hoge.css\"><STYLE TYPE=\"text/css\">@import url(http://nao.s164.xrea.com/hoge.css);</STYLE>";
print "</head><body>\n";
$uri = $ENV{'REQUEST_URI'};
$oldsvr = $ENV{'SERVER_NAME'};
$newsvr = "nao.s164.xrea.com";
print << "HEADER";
<h2>このコンテンツは以下に移転しました</h2>
http://$oldsvr$uri<br>
は<br>
<a href="http://$newsvr$uri">http://$newsvr$uri</a><br>
に移転しました.
<p>
<a href="http://$newsvr">Top Page</a>
<hr>
<address>nao(at)s164.xrea.com</address>
HEADER
print "</body></html>\n";
つまり REQUEST_URI で移転先を生成しているというわけだ.難点は,本当にもともと存在しない URI を指定されてもリンク先を生成してしまうという点だけど,まあそれはほっとけばいいかな(ぉHEAD -S で確認したらちゃんと 404 が返っていることがわかったので,bot ももう来なくなるだろう.
[TrackBack URL: http://nao.s164.xrea.com/td/tb.rb/20070505]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
本日のリンク元
検索
- ErrorDocument ×6 / xrea errordocument ×6 / ErrorDocument 404 移転 ×4 / キーワード不明 ×4 / ErrorDocument 301 ×4 / htaccess ErrorDocument XREA ×2 / errordocument 301 ×2 / ブログ移転 ページ 飛ばす ×1 / ErrorDocument 404 ContentType ×1 / errordocument 携帯 ×1 / ErrorDocument 404 スパム ×1 / ブログ 移転先へのリンク ×1 / html link style print ×1 / 移転ページ cgi ErrorDocument ×1 / 移転先 リンク ×1 / ErrorDocument 携帯 PC ×1 / errordocument topページ ×1 / ErrorDocument スパム ×1 / Xrea ErrorDocument指定 ×1 / errordocument charset "doctype html public" ×1 / トップページ 飛ばす 移転 ×1 / XREA ErrorDocument ×1 / Errordocument 404 飛ばす トップ ×1 / 移転先へ 飛ばす ×1 / ErrorDocument リダイレクト されない ×1 / ErrorDocument リンク ×1 / ErrorDocument xrea ×1 / errordocument charset html doctype public ×1 / ErrorDocument REQUEST_URI ×1 / ErrorDocument Request_URI ×1 / xrea errordocument 404 ×1
以下の広告はサーバによって自動的に挿入されています.
Copyright © 2004-2006, nao. All rights reserved.






404ではなくて301(Moved Permanently)の方が適切なのでは?
コメントどうもです.当時,ご指摘どおり 301 も検討したのですが,
URI が変わったということを認識して欲しかったのであえて 404 にしたという経緯があります.
ただ,今になって考えるとやはりクライアントにとっては
クリックの手間も増え,親切とはいえないので,
確かに 301 のほうが良いような気もしてきました.ちょっと検討してみます.