奥村のホームページは次のどれでしょうか?
正しいのは 2(と,もしかしたら 3)です。
1 は明らかに間違いです。 このようなURLをブラウザがサーバに要求すると,サーバは次のような形式でエラーメッセージと正しいURL http://oku.edu.mie-u.ac.jp/~okumura/ をブラウザに返します。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://oku.edu.mie-u.ac.jp/~okumura/">here</a>.</p> </body></html>
ブラウザは,このエラーメッセージをそのまま表示するのではなく,こっそり再挑戦しますので,ユーザはこれでうまくいったように思ってしまうのです。 実際は無駄をしていることになります。
では 2 と 3 ではどちらがいいかですが,打ち込んでもらう時間を考えれば当然 2 の方を使うべきでしょう。
さらに,2 の方式なら,将来的に index.html を index.php(PHP)や index.cgi(CGI一般)や index.pl(Perl CGI)や index.asp(ASP) に変えたいときに,住所変更をしなくても対応できます。
なお,2 と 3 を混在させると,ブラウザは 2 と 3 が同じ文書だとわからないので,同じ文書を2回ダウンロードすることになり,無駄が生じます。 訪問済みリンクは色が変わるという仕組みもうまく働きません。
なお,2 の形式で統一した場合は,同じディレクトリの他のファイルから http://oku.edu.mie-u.ac.jp/~okumura/ にあたるファイルにリンクするには,
<a href="">戻る</a>
や
<a href="./">戻る</a>
のような記法が使えます。これを間違えて
<a href="index.html">戻る</a>
としてしまうと,2 と 3 の形式を混在させたことになり,ブラウザはすでにメモリに入っている http://oku.edu.mie-u.ac.jp/~okumura/ を再表示する代わりに,再度サーバに読みにいってしまいます。
RFC1808 ``Relative Uniform Resource Locators'' によれば "./" は "" と同義でベースURL自身を指すことになっています。
また,ディレクトリ階層を一つ上がったところのインデックスページに戻るには
<a href="../">戻る</a>
とします。
ちなみに,ブラウザの「戻る」ボタンは直前のページに戻るという意味です。 この意味の「戻る」リンクをJavaScriptで
<a href="JavaScript:history.back();">戻る</a>
のように作っている人もいます(ブラウザの「戻る」ボタンを知らない人への対策でしょうか)。 つまり,「戻る」リンクはいろいろな意味がありうるので,「何々のページに戻る」とか,あるいはさらに,パンくずリストで任意の階層のインデックスページに戻れるような工夫をするのがいいでしょう。
もう一つ問題ですが,次のものは正しいでしょうか。
1番目のものは,index.html/ というフォルダがない限り,エラーになります。
2番目のものは,エラーにならず,単に index.php(というPHPファイルを実行した内容)を表示します。
3番目のものも,エラーにならず,単に index.php(というPHPファイルを実行した内容)を表示します。
PHPやCGIなど,実行できるものについては,このような扱いになるのです。 このとき,余分に付けられた / や /hoge/geho といったものは,PATH_INFO という環境変数として index.php に渡されますので,処理に使うこともできますし,無視することもできます。
Last modified: 2006-05-06 13:22:19