相対パス化

ページをただ単に見るだけではSSL(Secure Sockets Layer)などは何の意味もないのだが、そう手間もコストもかかりそうもないので、SSL化をしてみた。基本的には、サイトのURLが「http://」で始まっていたものが「https://」に変わるだけのことである。要するに、サイトのURLが基本的に変わることになる。ちなみに、従来通りに「http://」でアクセスしてきても多くの場合は自動的に「https://」に変わるようである。

自動的に変わらなかったのは、個人的に実験した範囲では、CGIPHPのプログラムだった。これは「https://」でないと動作しなかったように思う。これらは早急に修正が必要になる。そして、またこれらのスクリプトの内部では「http://」で始めた絶対パス指定のURLがいくつかある。それも直さなければならない。これらをひとつづつ見ていくのには少し時間がかかるのが面倒である。

ところで、この絶対パス指定の部分を「https://」のように同じく絶対パス指定で書き換えてもよいが、この際、すべて相対パス指定にすることにした。これなら、「http://」であろうが「https://」であろうが、そんなこととは無関係に動作するからである。


CGIの例

CGIのプログラムは cgi-bin のほか、perl などの2階層目にある。別に、どこに置いてもかまわないが慣習的にそうしている。
3階層目はそのプログラムで使う画像やデータを置いている。プログラムは今のところはない。
SAMPLE
cgi-bin -- perl -- terms_square.cgi

たとえば、perl の中に terms_square.cgi1) があり、その中に次のような絶対パスで書いた部分がある。
SAMPLE
my $strReturnPage = "http://www.mermaid-tavern.com/index.html";

このファイル(terms_square.cgi)は cgi-bin/perl 内にある。階層としては2階層目である。
これを相対パスで書き直す場合は次のようになる。
SAMPLE
my $strReturnPage = "../../index.html";

この場合の問題は、プログラムをどの位置に置いたかによって、それぞれ前に「../」が何個付くかということを考えなければならない。これが面倒である。 おそらく、当時はそれが面倒だった、そしてどの位置に置くかもハッキリしていなかった、などによって安易な絶対パス指定を使っていたように思う。このパターンはそれしか理由がない。探せはまだいろいろあるだろう(JavaScriptに埋め込んだものもある)。日暮れて途遠し2)、である。
NOTE
1) これはニューヨークの中央部にある有名な広場 Times Square のジャレである。
2) これは論語にある言葉だと思っていたが、正しくは「史記・伍子胥伝」にある言葉だった。


絶対パス指定を使ったのは

http;//で始まる書き方は使わない、相対パス指定で書くほうがいい、そういうことはわかっているのだが、たとえばWEB上のデータを検索スクリプトを使って検索する場合、相対パス指定だとそのWEB上のページにまで行かなければならない。

これが面倒なので、ローカルのままでズバリ実行しようとすると(または簡単に動作を確認しようとすると)、どうしてもhttp://で始まる絶対パス指定になってしまう。しかし、これからはWEBで使うものには原則として相対パス指定を使うことにしよう。

- 2020/06/25 -