自作403をRefererによって出力振り分け

PHPを使って自作403をRefererによって出力振り分けるように設定

サブドメインでフットサル用のサイトを運用しはじめてから顕在化した問題に対処。

どのような問題かというと、サブドメイン経由でMovable Typeのcomment.cgiにアクセスして、何らかの理由で403とか500のエラーが吐かれた場合、Movable Typeは主ドメイン下に置いているために403や500は主ドメインのものが出てくる。 で、その403の中では、CSSやら、戻り先(Home)やらは主ドメインのものを指定している。 今までとは見栄えが違うのはまぁいいとしても、サブドメインから来た人は、戻り先のリンクを辿ると意図するところとは違う場所に「戻って」しまう(主ドメインのトップ)。

そこで、PHPで、Refererをみてもしサブドメイン経由の場合は、サブドメイン用のCSSや戻り先を指定するようにしてみたという次第。 まぁ問題としてニッチすぎるのは、いつものことだが^^;

サンプル・ソース(抜粋)

うちの場合は、サブドメインでTOB<http://tob.asamuzak.jp>を使っているので、403はこんな感じにしてみた。

<?php
if (ereg("application/xhtml\+xml", $_SERVER['HTTP_ACCEPT'])) {
  header ("Content-Type: application/xhtml+xml; charset=UTF-8");
} else {
  header ("Content-Type: text/html; charset=UTF-8");
}
$myhost = ereg("^http://tob\.asamuzak\.jp/", $_SERVER['HTTP_REFERER']) ?
  "http://tob.asamuzak.jp/" : "http://asamuzak.jp/";
$mytitle = ereg("^http://tob\.asamuzak\.jp/", $_SERVER['HTTP_REFERER']) ?
  "TOB" : "asamuzaK.jp";
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<?php
echo '<link rel="stylesheet" type="text/css" href="'.$myhost.'path/to/css" />'."\n";
echo '<title>'.$mytitle.' : 403</title>'."\n";
?>
</head>
<body>
<?php
echo '<h1>'.$mytitle.'</h1>'."\n";
?>
<h2>403 Forbidden</h2>
<p>
    アクセス権がありません。
    指定したURIが間違っているか、アクセス制限がかけられている可能性があります。
</p>
<?php
echo '<p><a href="'.$myhost.'">Home</a></p>'."\n";
?>
</body>
</html>

"自作403をRefererによって出力振り分け"へのTwitter上でのコメントやRT

ツイートを取得できませんでした。