• 締切済み

URLの相対指定について

いま、BASEタグを使ってURLを相対指定して、簡略化をしているHTML文書があります。 このHTML内で、もう一つ別の相対指定の基準を指定する方法はあるのでしょうか? リンクの位置関係は簡単に書くと下のようになってます。 Web Site +-HTML文書 +-リンク先のファイル(複数) Local +-リンク先のファイル(多数) Localのリンク先のファイルが多数あるので、 いちいち<A href="file:///.....と書くのがいやなので、 BASEタグによる基準をLocalのフォルダにしています。 しかし、こうするとWeb Site上へのリンクはいちいち、 <A href="http://.....と絶対指定しなければなりません。 これを回避したいのです。

みんなの回答

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.4

ある程度、http:// と file:// がある程度まとまっているのであれば、まとまりごとに、<BASE URL を指定してやっても良いと思います。1HTML文書内で何度でも切り替えれるわけですから。 ぐちゃぐちゃだと、お手上げですね。 (ローカルと、WEBを両方相対にしてしまうと、両者が記述上、全く区別されていないわけですから、識別不可能です(人間でも識別不可能ですね) ただし、1つのHTMLファイル内で、WEB上とローカルへの指定を両方しながらも、オフラインでもリンクをうまく連結するように記述することは以下の方法で出来ます。 (1)ローカルへの指定は絶対指定。file://~とする。 BASEは使わない。 (2)WEBでのサイト内の指定は全て相対指定にする。 (3)HTML内では、JavaScriptでプロトコルを判定。    file://プロトコルなら、BASE URLをfile://~~として、相対指定をローカルへと連結させる。    http;//プロトコルなら、BASE URLをhttp://~~として、相対指定をHTTPへと連結させる。 この方法なら、1つのファイルで、(オフラインで)ローカルファイル閲覧でも(オンラインで)該当WEB閲覧でも両方つつがなく動作します。

  • wogota
  • ベストアンサー率42% (66/154)
回答No.3

仰せのことは、大体理解できました。 つまり、絶対指定で http://... となる部分と、 file:///... となる部分を それぞれ、相対指定したいということだと思います。 結果としては、出来ないということになります。 BASEタグのHREF属性で指定されたURLは、httpやfile、ftpのように プロトコルごとに指定を置くことが出来ません。 一度、file:///... とすると、あらゆる相対指定に対しては、 指定文字列の前にBASEタグのHREF属性のURLを直接つなげているものと 解釈されます。 というよりも、補足された内容から察するに、BASEタグの指定を しないほうがいいのではないかと思います。 第3者が見ることが可能なウェブ上にローカルのパスを表示することの 理由が見いだせないこともあります。 アップするディレクトリ構成をそのままローカルに用意し、 ローカルのファイルも、この構成に矛盾しない位置においてから 表示するように工夫すれば、敢えてBASEタグをつける必要は 無いと思うのですが。 いかがでしょう?

kazu-kun
質問者

補足

やっぱり出来ないのですかね・・・。 最後のご指摘ですが、実はウェブサイトの構成の原本は、Cドライブにあって、リンク先のローカルファイルはDドライブにあるので、相対指定出来ないんですよ(^^; それとも出来るのかなぁ~?<CドライブからDドライブへの相対指定。 敢えて全てを相対パスにしたい理由は、ウェブサイトの構成の方は、サーバがいつでも簡単に変えられたり、ローカルで確認しやすいため。 ローカルファイルのほうは、リンクしたい理由があって、かつ基準となるフォルダが移動する可能性があるため。 ・・・なんです(^^;

  • wogota
  • ベストアンサー率42% (66/154)
回答No.2

もしかしたら、BASEタグを変更せずに、アップロードしているのは 無いでしょうか?アップロードしたHTMLファイルの位置をアドレス欄 などから参照して、BASEタグのHREF属性を、適当な位置に書き換える 必要があります。 例えば、表示しているページが、"http://hogehoge.gov/me/hoge.html" としたとしましょう。このとき、BASEタグのHREF属性には "http://hogehoge.gov/me/"を設定するのが適当です。 いかがでしょうか?

kazu-kun
質問者

補足

たぶん、No.1のかたもNo.2のかたも、誤解されていると思いますが、 BASEタグのhrefにLocalのURL(file:///...)を指定しているHTMLをウェブサイト上に置いた状態で、敢えてLocalのファイルをリンクして使おうとしているのです。 しかも、そのHTML上から、「そのHTMLがあるサーバ上の別のHTMLファイル」などに対しても複数のリンクがあるのです。 この時「サーバ上の別のHTMLファイルなどに対する複数のリンク」を絶対URLで指定せずに相対指定することによって、このウェブサイトのコピー(というか原本)がローカルにある時に、オフラインでの閲覧を可能にしたいのです。

  • Methyln
  • ベストアンサー率29% (242/823)
回答No.1

htmlタグの解説本に書かれているとは思いますが、表示されているファイルから リンク先のファイルまでが同じサーバ上であれば、相対ディレクトリ指定で 指定できますが..... 同一ディレクトリのa.htmファイルへのリンク <a href="./a.htm">~</a> imageディレクトリ内のa.htmファイルへのリンク <a href="./image/a.htm">~</a> 1階層上にあるディレクトリにあるa.htmファイルへのリンク <a href="../a.htm>~</a> もちろんこれは、別サーバへのリンクの場合は絶対指定しかできません。 (まぁ、当たり前ですね。)

kazu-kun
質問者

補足

もちろん、上で書いた'Web Site'というのは同一サーバ上です。 しかし、BASEタグで基準をLocalにしている為、全てのAnchorに対して、 Localが基準にされてしまいます。

関連するQ&A