URLの指定方法(絶対パス、相対パスと省略方法)
ホームページ(ウェブページ)のHTMLファイルのスクリプトでは、URL(URI)を指定するのに様々な表現方法(参照方法)があります。絶対パス(アドレス)で書いたり相対アドレスで書いたり、臨機応変に使い分けるとソースコードを短くすることができます。
HTMLやPHPやJavaScript内での、様々なパスの書き方や ファイル楽天 の参照方法を知っておくと便利です。他人の書いたスクリプトを読む上でも知っておく必要があります。
絶対パス(アドレス)で指定する方法
インターネットでの 絶対パスというのは、現在のファイルの位置には関係なく絶対的なファイルのアドレスのことです。
絶対パスで記述しておくと、その記述はどの位置のファイルでも使えることです。つまりどのファイルにインクルードしてもOKということです。
一番確実なのは次のように絶対パス(アドレス)で表示(指定)する方法です。しかし、http:から記述するとどうしてもアドレスが長くなってしまいます。
<a href="http://hogehoge.jp/hoge/hoge1.html">***</a>
URLではありませんが、サーバー上で絶対パスと言う場合は、http:からのパスではなく、次のようなサーバー上のパスを絶対パスと言うことがあります。これはサーバーによって異なっています。
/virtual/***/public_html/hogehoge.jp/hoge/hoge1.html
HTTPプロトコル(スキーム)を省略した書き方
下記のようにリンク先などの外部ファイルのURLからhttp:やhttps:などのHTTPプロトコルを省略するとHTMLコードを短くできます。特にリンク集やメニュー部分などでこれを省略するとファイルサイズをかなり小さくできます。この場合、プロトコルが省略されているとそのページの表示に使われているHTTPプロトコルが自動的に適用されますのでページの表示には全く問題ありません。
<a href="//hogehoge.jp/hoge/hoge1.html">***</a>
もし、http:でページを表示しているのなら、参照先のURLにも自動的にhttp:が使われます。https:でページを表示しているのなら、参照先のURLにも自動的にhttps:が使われます。このため、http:とhttps:の両方を同時に省略することはできません。
何でもかんでもHTTPプロトコル(スキーム)を省略していると、エラーになることがありますので注意してください。自分のサイト内を直接参照する場合はあまり問題になりませんが、SNSなどを呼び出す場合の自サイトURLなどに使うとエラーとなることがあります。
「/」で始めたURLはドメイン直下を表します
<a href="/hoge/hoge1.html">***</a>
同じドメインやサブドメイン内ならば絶対パスから「http://hogehoge.jp」などを省略できますので、ホームページのHTMLなどではコードをかなり短くできます。自サイトのサイドバーのメニューなどでは約2割もコードサイズが減ることがあります。
相対パス(アドレス)で指定する方法
相対パスとは、現在のファイルから見た、相対的に目的のファイルの位置を表す記述方法です。
<a href="hoge/hoge1.html">***</a>
hoge階層と同一階層のファイル内からは上記のように記述できます。hogeフォルダ内のファイルからは下記のように書くことができます。
<a href="hoge.html">***</a>
「./」は同一階層を表します
<a href="./hoge/hoge1.html">***</a>
この場合は「./」を書いても書かなくても同じ結果となります。
「../」はひとつ上の階層を表します
<a href="../hoge/hoge1.html">***</a>
例えば、hoge階層と同じ階層にhoge2フォルダがあり、その下の階層hoge2/hoge2.htmlからhoge/hoge1.htmlを示す場合は上記のようにひとつ上の階層../hoge/を付けて呼び出します。
二つ上の階層を表す時は次のように記述します。
<a href="../../hoge/hoge1.html">***</a>
「/」で終了したURLはインデックスファイル名が省略されています
ホームページのURLではよく「/」で終了したアドレスが使われています。これは下記のようなメリットがあるからです。
<a href="http://hogehoge.jp/">***</a>
上記のようにURLの最後が「/」で終了している場合は、「index.htm」「index.html」「index.php」「index.cgi」などのインデックスファイル名を省略していますよという事を表しています。このインデックスファイル名の優先順位はサーバーなどであらかじめ決められています。htaccessファイルで変更することも可能です。
このようにインデックスファイル名を省略すると、ホームページのアドレスを短くすることができます。また、後で「index.htm」を「index.html」や「index.php」などに変更してもホームページのアドレスを変更する必要がありませんので便利です。