ルート相対パスの使い方とは?SSLのデバッグ環境でのエラーについても教えてください

このQ&Aのポイント
  • ルート相対パスは、テスト時でも納品後でもURLの変更をしなくて済む方法です。
  • ルート相対パスを使用することで、静的なファイルやプログラムの修正をする必要がありません。
  • SSLのデバッグ環境では、セキュリティに問題があるエラーが出ることがありますが、テスト環境なので問題ありません。
回答を見る
  • ベストアンサー

ルート相対パス

WEBアプリを開発しています。 (windows・IISです) 今回初めてシステムをSSL対応で納品することになりました。 今まで何度か質問させていただき、それほど大きな変更はないと知り安堵していたのですが、 いざ、修正しますと結構、力仕事的にあることがわかりました。 cgiアプリのプログラムで、必要な箇所に"https://localhost/"を、くっつけるよう直していましたが 静的なhtmlファイルやjsファイルなどは、 動く環境に合わせて、直接ファイルを開けてURLを書き換えないといけないです! 納品時に、またお客様の環境に合わせた修正をしなければならない??? お客様の環境が変わったら? それは無理! と、焦りました。 で、調べていましたら「ルート相対パス」にしておけば テスト時でも、納品しても 変更しなくて良いとのこと!? (ルート相対パス・・・初めて知った無知者です) <img>はsrc="/xxx/xxx.png"、 ルート直下であれば src="/xxx.png" js、cssなど、src=関連は全てsrc="/・・・" <form>のactionも action="/cgi.exe" などにすればよいのでしょうか? 自分で確認しろ!と言われそうですが、なにぶん テスト環境はdebug用SSL環境ですし 納期は迫っているし、 皆さんのアドバイスで少しでも正確な(?)方法で動ければ、、、と 質問させていただきました。 ※因みにSSLのデバック環境だと、「セキュリティに問題があります」などのエラーが出るのは仕方の無いことでしょうか? 推奨されないという「サイトの続行」でテストしようとしていますが。 (やっとSSLのdebug環境ができたばっかりなんです) 以上、よろしくお願いします。

  • jg1wjz
  • お礼率91% (148/162)
  • HTML
  • 回答数5
  • ありがとう数12

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

ルート相対パス、もしくは相対パスで全部記述すればいいです。 SSLのエラーは、証明書の問題ですからどうでもいいです。 確認すべきは、目的のページアクセスができているかどうかです。 そもそもページ自体の飛び先がhttpsになってないとか、 ページ内でhttpsアクセスになってない要素(imgとか)があるとか。

jg1wjz
質問者

お礼

naktakさん、ありがとうございます。 まだこれから試験ですが、 トップページは表示できています。 DBをまだ作成していないので、これから環境を整えます。 >SSLのエラーは、証明書の問題ですからどうでもいいです 安心しました! ありがとうございました。

その他の回答 (4)

  • think49
  • ベストアンサー率59% (285/482)
回答No.5

「ルート相対パス」で用語の混乱が見られるようなので補足しておきます これは Adobe が提唱している「サイトルート相対パス」から来ていると思われます。 下記にAdobe, RFC の説明を併記します。 ■Adobe の説明 - 絶対パス (http://www.adobe.com/support/dreamweaver/contents.html など) - ドキュメント相対パス (dreamweaver/contents.html など) - サイトルート相対パス (/support/dreamweaver/contents.html など)  ※http://helpx.adobe.com/jp/dreamweaver/using/linking-navigation.html でリンクの種類の説明有。  ※http://helpx.adobe.com/jp/dreamweaver/kb/233307.html によるとDreamweaver ヘルプでも説明されている模様。 ■RFC2396 (URI: Generic Syntax) の説明 - 絶対パス (文中に該当語なし。RFC2396に倣うならBNF式 "abs_path" が該当。) - 相対URI (BNF式 "relativeURI" で定義。相対パス、絶対パス、認証URI、クエリ文字列の組み合わせ総称) - 絶対URI (BNF式 "absoluteURI" で定義。 http://www.adobe.com/support/dreamweaver/contents.html など)  ※http://jbpe.tripod.com/rfcj/rfc2396.ej.sjis.txt に原文(和訳)有。 ■RFC3986 (URI: Generic Syntax) の説明 - 相対パス (該当語なし) - 絶対パス (BNF式 "path-noscheme" で定義。 /support/dreamweaver/contents.html など) - 相対参照 (BNF式 "relative-ref" で定義。RFC2396における相対URIに相当。) - 絶対URI (BNF式 "absolute-URI" で定義。 http://www.adobe.com/support/dreamweaver/contents.html など)  ※http://www.ietf.org/rfc/rfc3986.txt に原文あり。 RFC とはインターネット関連技術の標準化団体を指し、この規定が標準と思って差し支えありません。 Adobe は「サイトルート(公開サーバのルートディレクトリ)からの相対パス」という意味で「サイトルート相対パス」と表現していますが、これは RFC 定義の「絶対パス」を指します。 また、Adobeが説明する「絶対パス」は RFC における「絶対URI」を指します。 特に「絶対パス」の定義がまるで違いますので、他人に説明するときに誤解を招かぬよう RFC 定義で覚えておくことをお勧めします。 # Re: jg1wjzさん

jg1wjz
質問者

お礼

think49さん、 大変詳しく正確な回答、有難うございました。 他の人に説明できるよう、勉強します!

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

いやはや、そんな基礎的なところで・・大丈夫ですか?? HTTPプロトコルとブラウザの基本的な動作ですが・・ たとえば GET: http://hoge.com/abc/def.html というファイルは、 http:HTTPプロトコルで //  インターネット上の hoge.com サーバーにある /abc/efg.html というファイルを要求します。 hoge.comというHTTPサーバーは、そのファイルを提供し(実在の有無は関係ない) そのファイルを提供し ブラウザは、そのページを提供したサーバーやプロトコル、ファイル名を知っているので、そのページ(http://hoge.com/abc/def.html)内に src="/abc/abc.jpg" なら、 hoge.comに、HTTPプロトコルで、/abc/abc.jpg を要求しますし src="../aa.gifなら、hoge.comに対して、HTTPで /aa.gifを要求します。 スタイルシートがあれば、同様ですし、 そのスタイルシートに@importがあれば、そのスタイルシートからのパス http も https も通信経路が暗号化されるだけで内部処理は変わりません。テスト用はhttp://local.hostで試せばよいだけです。

jg1wjz
質問者

お礼

ORUKA1951 さん、ありがとうございます。 お恥ずかしい話ですが、WEBシステムの基礎的な知識がないまま、 オフライン系のプログラマーから移行していまして。。。 そして、いろいろな事情もあり、周りには教えてくれる人は誰もいません、と言いますか 私一人です。 よく知らないまま、いろんな掲示板でお世話になりながら ここまできてしまいました。^^; おっしゃっていることはだいたいわかります。 でも じゃあ、説明してみろ! といわれたら、言葉に詰まります。 正しい用語で説明できない。。。 勉強不足も承知しています。 これでいいのか、毎回悩んでいるのも事実です。 それでも限られた時間内で仕上げなければならず、突貫工事のような毎日。 >http も https も通信経路が暗号化されるだけで内部処理は変わりません。テスト用はhttp://local.hostで試せばよいだけです。 他者さんの開発したシステムも参考にさせていただきながら、これも掲示板などで 教えていただきました。 そしてそれを実際に実現するに当たり、試行錯誤で質問させていただきました。 周りには教えてくれる人も、うなづいてくれる人も、誰もいないので 基礎的なこと、単純なことかもしれませんが質問させていただきしまた。 暖かいご指導、感謝いたします。 今後ともよろしくお願いいたします。

noname#204159
noname#204159
回答No.2

基本的な設計が悪いだけです。 >cgiアプリのプログラムで、必要な箇所に"https://localhost/"を、くっつけるよう直していましたが これもおかしい。 ディレクトリ構成を利用者・開発者で同じ環境を用意すれば良いこと。 社内SEもあなたも勉強不足。 絶対パスでも相対パスでも、環境の設計さえ統一できれば問題は生じないです。 たぶん、あなたは前任者から開発を任されたのかと思います。 今回を契機に、サイトのディレクトリ構成を、依頼者と意識統一したほうが良いと思います。 それを行うだけで、後継者の作業は楽になります。

jg1wjz
質問者

お礼

Indomethacinさん、有難うございます。 >これもおかしい。 すみません、自分のコーディングレベルで書いてしまいました。 debugなので localhost で。 実際にはお客様の環境のURLになります。 >ディレクトリ構成を利用者・開発者で同じ環境を用意すれば良いこと。 ディレクトリ構成は同じと思います。 (サーバーを構築して納品) >社内SEもあなたも勉強不足。 おっしゃるとおりです。 面目ない。。。 あっ、いろいろな事情があり、社内SEはいません。 >今回を契機に、サイトのディレクトリ構成を、依頼者と意識統一したほうが良いと思います。それを行うだけで、後継者の作業は楽になります。 ディレクトリ構成は全てルート直下で動いています。 ログファイルだけは別ディレクトリに保存。 (こんな回答でいいのか???) 今回、後任者もできそうで、いろいろ統一化・共通化に向けて動こうとしていますが 個人的には、全て作り変えたほうがいいと思ってるしだいです。 なにしろ、一ヶ月かかる工数を「とりあえず動けばいい」と言われ それこそ詳細仕様も把握できないまま一週間で作り上げ、作り上げてしまえばそこのところはもうノータッチ、異常系bugが出たら大騒ぎ?! 周りはみんな「敵」 ・・・すみません、愚痴ってしまいました。 気を取り直して、ご指導有難うございました。

  • t_ohta
  • ベストアンサー率38% (5085/13292)
回答No.1

書かれている方法は相対パスでは無く絶対パスですね。 プロトコルやホスト名を省略しておけば、ブラウザはその時使用しているプロトコル、ホスト名を使って補完してくれるので、ディレクトリ構造が変わらなければ本番環境へ移しても修正は必要なくなります。 また、相対パス(src="../hoge/x.png" って感じ)でもプロトコルやホスト名を省略しているので、ブラウザが補完してくれるためディレクトリ構造が変わらなければそのまま使えます。 「セキュリティに問題があります」はテスト環境のFQDNとSSL証明書のFQDNが異なっているから出るんじゃないでしょうか。 予算に余裕があるならテスト環境用のSSL証明書を取得するという手もありますが、無駄な出費だと思いますので、そのままテストするのがいいのではないでしょうか。

jg1wjz
質問者

お礼

t_ohta様、早々の御回答ありがとうございます。 今までは  SRC="hoge.png" action="hogo.exe" などとしていましたので  SRC="/hoge.png" action="/hogo.exe" だけでいいのですね! 助かりました。 ありがとうございます。

関連するQ&A

  • 相対パスか絶対パス??

    CGIサイト内検索を設置したいと思っていますが、相対パスか絶対パスって言う言葉が出てきます。 (例)path/にはsearch.cgiまでの相対パスか絶対パスが入ります。 相対パス・絶対パスとは何でしょう? サーバーにあるホームディレクトリのフルパスとは違うのですか? もしフルパスと同じだと言った場合・・・ 「path/にはsearch.cgiまでの相対パスか絶対パスが入ります」ではフルパスが/home/hatenaだった場合は 下記にはどのようにはいるのでしょうか? (例)<form method="GET" action="path/search.cgi"> 再投稿ですが、もうチョット具体的に書いてみました 教えてくださいお願いします。

    • 締切済み
    • CGI
  • 相対パスについて

    初歩的なことですみません。 相対パスについて教えてください。 <public_html>---<cgi-bin>---<ccc>---<ttt.pl> *************| *************---<eee>---<test.html> こちらの構成で、(***は無視してください。) (public_htmlの下はcgi-binとeeeフォルダです。) test.htmlから見た、ttt.plのパスは ../cgi-bin/ccc/ttt.pl  でよいのでしょうか?? CGIを設置する時、ディレクトリを変えたら、動かなくなってしまったので・・・ 宜しくお願いします。

    • 締切済み
    • CGI
  • C#で相対パスを絶対パスへ変換したい

    C#で相対パスを絶対パスへ変換したい C#でプログラミングしています。 以下のようにベースとなる絶対パスと、そこからの相対パスがあるとします。 string basePath = "C:\\Projects\\Test001\\Debug\\"; string relativePath = "..\\..\\Test002\\"; 2つの文字列をただ足し合わせるだけだと、 "C:\\Projects\\Test001\\Debug\\..\\..\\Test002\\" となってしまいます。 これでも目的のパス「C:\\Projects\\Test002\\」にアクセスできますが、なにか既存の関数などを使って、「C:\\Projects\\Test002\\」というちゃんとした絶対パスを取得する方法はないでしょうか?

  • サイトルート相対パスと絶対パスのメリット・デメリット

    サイトルート相対パスと絶対パスのメリット・デメリット htmlでサイト内リンクを指定する際、 /test/test.html というサイトルート相対パスで指定する場合と、 http://example.com/test/test.html という絶対パスで指定する場合、 それぞれのメリット・デメリットはどういったものがあるでしょうか? ドメインは絶対に変更されないという前提の場合です。 絶対パスの方が重くなるなどのデメリットはありますか?

  • javascript 相対パス表示

    javascirptで、現在のページのディレクトリを取得し サイトルート相対パスで表示させるには どうしたらよいでしょうか? 例;http://testweb.co.jp/test01/test02/test.html   ↓ サイトルート相対パスでディレクトリのみを表示  /test01/test02/

  • ビルダー6 (サイトの設定・ルート・相対パス、絶対パスについて)

    ビルダー6を使ってます。 まず、例えば、 d:\homepage\ をルートにして、 d:\homepage\index.html d:\homepage\contents1\page1.html d:\homepage\image\image1.jpg って感じでファイルを作ったとき、page1.htmlで、 <img src="../image/image1.jpg"> とか<a href="../index.html">と相対パスで指定すると、ちゃんとプレビューできるのですが、 <img src="/image/image1.jpg"> とか<a href="/index.html">と絶対パスで指定すると、 ルートが、d:\ になってしまっていてプレビューできません。 d:\homepage\をルートに設定するには、どうすればいいでしょうか? サイトの設定には、d:\homepage\ を設定してるんですが上手くいきません。

  • 絶対パスのルートをサブディレクトリに変更する方法

    現在他人が作ったサイトの修正をしておりますが、そのサイトのパスが全部絶対パスとなっており、デモ確認ができなくて困っております。 テスト用に「test」というサブディレクトリが用意されていますが、.htaccessなどを使って、「test」内にアップされたテストサイトのルートをサブディレクトリ「test」と認識させることは可能でしょうか。 詳細については下記となります。 ・ルートディレクトリ内のファイルは現在公開中なので、いじることができません。また、ルートディレクトリ内に.htaccessを置き、リダイレクト的なこともできません。 ・サブドメインを設定できないので、「test」をサブドメインのルートにすることはできません。 ・元々他の方が作ったサイトで、今回はその内の2、3ページだけの修正なので、相対パスへの置換以外の方法で対応したい。 ・できれば本番公開時にファイルの修正を必要としない方法が理想です。jsを使った方法があると思いますが、jsファイルを読み込ませないといけないので、できれば避けたいです。 以上のような状況ですが、何か方法はありませんでしょうか。 何卒よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 絶対パスでしか画像が表示されません。

    自分の端末(windows2000)にApacheをインストールしてCGIを作製しています。 IEでCGI(http://localhost/cgi-bin/xxx/xxx.cgi)を起動して 画像(c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif)を 表示させたいのですが、<img src='★'>タグの★部分が 絶対パス(c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif)だと 表示されますが、相対パスなど他だと表示されません。 どのような形式にしたら表示できるでしょうか? それともc:/apache group/apache/cgi-bin/配下にある画像は 表示できないのでしょうか? ※画像をIEでURL(http://localhost/cgi-bin/xxx/icon/xxx.gif)で  表示させようとしたところできませんでした。 ・IE確認用URL  http://localhost/cgi-bin/xxx/xxx.cgi ・CGIファイル  c:/apache group/apache/cgi-bin/xxx/xxx.cgi ・画像ファイル  c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif ・Apacheのドキュメントルート  c:/apache group/apache/htdocs

    • ベストアンサー
    • HTML
  • 絶対パスと相対パスはどちらがいい?

    htmlで自サイト内のリンクをつける場合、絶対パスと相対パスはどちらを使った方がいいのでしょうか? すべてのファイルが同じディレクトリにあるとして、 <a href="test.html">test</a> と <a href="http://example.com/test.html">test</a> では、SEOの効果が違ったりしますか? 教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 絶対パス(ルート相対パス)での指定でのメリットとは?

    最近大手のwebサイトのソースを見ると、ほとんど絶対パス(/からはじまるルート相対パス)でかかれていることが多い気がします。 これってなにか理由があるのでしょうか?? 色々調べてみましたが中々それといったものがなく、自分の考えとしては、ページ共通の画像やcssファイルなどは確かにそれだと便利で効率はいいだろうなぁ、という感じですが、はたしてそれだけなのか?と思ってしまいます。 よくソースをみるサイトは、apple、sony,macromediaなどです。 宜しくお願いします。

    • ベストアンサー
    • HTML