• 締切済み

ローカルテストサーバーと本番サーバーにおける、相対パス表記のズレについて。

初歩的な質問かもしれませんが、よろしくお願いします。 現在、webサイトを制作中で、ローカルでテストできるように、自分のPCにXAMPPをインストールしました。 本番サイトのトップページURLが、http://example.comであるとすると、このページは ローカルテスト上では、http://localhost/example.comとブラウザには表示されます。 つまり、あたまに「localhost/」が付く分だけ、本番サイトとは、1階層のズレが生じます。 このhttp://example.comのトップページで、http://example.com/about.html でアクセスできるページへのリンクを貼る場合、 「http://example.com/about.html」という絶対パスでリンクを貼ると、ローカルから本番へと飛んでしまうことになります。 なので、リンクを貼る場合、絶対パスではなく相対パスで貼る必要があると感じているのですが、 その書き方がよく分からないのです。 http://example.com/about.html というページのトップページからの相対パスは、 本番サイト上では、「./about.html」と表記でき、 (http://example.com/about.html だから1階層下) ローカルテスト上では、「././about.html」と表記することになるので、 (http://localhost/example.com/about.html だから2階層下) テスト後、本番にアップする際にいちいちパスを修正しなければならなくなり、これだと不便です。 テストしてOKだったHTMLを修正せずに、そのまま本番のサーバーへとアップする方法がありましたら、教えて下さい。 ・PCのOS:winXPsp2 ・dreamweaver CS3(win) ・phpファイルもアップすることがあります。

  • march4
  • お礼率83% (628/754)
  • HTML
  • 回答数4
  • ありがとう数4

みんなの回答

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.4

# 私は XAMPP を知らないので、考え方だけ。 「./」の意味を誤解されている様で、それが話がこんがらがる原因かと思いますが、それは説明の中で。 ローカルでテストOKのファイルを無修正で本番サーバーにアップして良い様にするにはいくつも方法があります。 1 正しい相対URLを使う "./foo.html" と "foo.html" は等価です。 "././foo.html" も等価です。 だから、ローカルで "./foo.html" と書いてうまくいく場合、そのまま本番サーバーにアップしてもうまく行くはずです。 http://localhost/example.com/dir1/foo.html​ から http://localhost/example.com/dir2/bar.html​ にリンクする場合は、 "../dir2/bar.html" という相対URLを書きましょう。 "../dir2/bar.html" は、​http://example.com/dir1/foo.html​ から http://example.com/dir2/bar.html​ への相対URLとしても正しいのでそのままアップ可能です。 2 ローカル環境を変える ​http://example.com​/ と ​http://localhost/example.com が対応付けされてしまうのは、あなた自身がローカルにWebサーバーをインストール/セットアップする際に選択した結果では無いでしょうか? http://localhost/ に対応する様に変更できないでしょうか? そうすれば、前項1 の相対URLの方法に加えて "/dir1/foo.html" の様な「ホスト名を省略した絶対パス」を書く事ができる様になります。 ただし、他の本番サーバーのためのテストにも対応したいなら上級者向けの設定が必要になります。 3 場合によっては環境変数とかで細工できますが、これも上級者向けです。 質問中にURLの例が書かれていたので、回答も書きやすかったです。 ありがとうございます。

march4
質問者

お礼

ありがとうございました(^^) また何かありましたら、教えて下さいね。

march4
質問者

補足

回答をありがとうございます。 >"../dir2/bar.html" は、http://example.com/dir1/foo.html​ から ​http://example.com/dir2/bar.html への相対URLとしても正しい そうですね、 「1つ上に上がって、水平移動して、1つ下に下がる」 なんていう相対パスならば問題なさそうなのですが。。。 >あなた自身がローカルにWebサーバーをインストール/セットアップする際に選択した結果では無いでしょうか? おそらく、そうなんだと思うのですが、apacheの設定がよく分からなかったもので、、、このように迷子になっています。 >他の本番サーバーのためのテストにも対応したいなら上級者向けの設定が必要に 複数のサイトを同様に管理しようと思っているので、回答#3さんのアドバイス「バーチャルホスト」の設定というのを調べてみようと思います。 また何かありましたら、よろしくお願いします。

noname#78739
noname#78739
回答No.3

Apacheでバーチャルホストを設定すればいいんじゃない? そうすれば、下のように分けられます。 http://example.com/about.html http://example.net/about.html http://example.info/about.html  ↓ http://www1.localhost/about.html http://www2.localhost/about.html http://www3.localhost/about.html

march4
質問者

お礼

ありがとうございました(^^) また何かありましたら、教えて下さいね。

march4
質問者

補足

回答ありがとうございます。 「バーチャルホスト」の設定で解決できるのでは、というアドバイスをありがとうございます。 早速、この方向でググってみます!

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

windowsのhostsに 127.0.0.1 localhost exsample.local             ^^^^^^^^^^^^^^あなたのドメイン名に.localでもつけて C:\WINDOWS\system32\drivers\etcに保存する。  (hostsのサンプルはC:\WINDOWS\system32\drivers\etcにあるhosts.sam) httpd.confのVIRTUALHOSTの項目を追加する。 <VIRTUALHOST 127.0.0.1> DocumentRoot "/home/exsample.com" ServerName exsample.local ServerAdmin webmaster@exsample.com AddHandler server-parsed .shtml Options +IncludesNoExec ErrorLog logs/exsample_error_log CustomLog logs/exsample-access_log common </VIRTUALHOST>  こんなところかな・・・ 私は、複数のローカルサーバーをVIRTUALHOSTでテストするので、こういう形、なお、hostsには9つまで追記できますが、それを越す場合は行を変えて 127.0.0.1 abc.com 等と続ければよい 私はCygwinをインストールした別ドライブ上に、apacheやperl,phpをUNIXサーバーの標準的な配置でインストールしている。

march4
質問者

お礼

ありがとうございました(^^) また何かありましたら、教えて下さいね。

march4
質問者

補足

回答をありがとうございます。 私には、ちょっと難解でしたので、補足的に質問をさせて頂きます。 >windowsのhosts 見つけました。 >127.0.0.1 localhost exsample.local http://aaa.com だとしたら、 127.0.0.1 localhost aaa.local と記述すればいいのでしょうか? それとも、 127.0.0.1 localhost aaa.com.local でしょうか。 >(hostsのサンプルはC:\WINDOWS\system32\drivers\etcにあるhosts.sam) これはどういう意味でしょうか? hosts.samというのは見当たらないのですが、必要なのでしょうか? >httpd.confのVIRTUALHOSTの項目を追加する。 C:\xampp\apache\conf の中にある httpd.conf のことですね? > <VIRTUALHOST 127.0.0.1> DocumentRoot "/home/exsample.com" ServerName exsample.local ServerAdmin webmaster@exsample.com AddHandler server-parsed .shtml Options +IncludesNoExec ErrorLog logs/exsample_error_log CustomLog logs/exsample-access_log common </VIRTUALHOST> これは一体、何のことやら。。。 しつこいですが、http://aaa.com の場合は、 <VIRTUALHOST 127.0.0.1> DocumentRoot "/home/aaa.com" ServerName aaa.local ServerAdmin webmaster@aaa.com AddHandler server-parsed .shtml Options +IncludesNoExec ErrorLog logs/aaa_error_log CustomLog logs/aaa-access_log common </VIRTUALHOST> という書き方になるのですよね? ちなみに、教えて頂いたhttpd.confの記述方法は、 http://www.studio-no9.com/sb/log/eid112.html こちらのサイトで紹介しているhttpd.confの記述方法と異なるので、 なんでだろう? と思っています。 上記サイトを参考にしてやってみたのですが、よく分からず現在に至るわけですが、両者の違いはどういうところにあるのでしょうか。 初歩的なことをざっくり質問している気がして恐縮なのですが、 どうぞよろしくお願いします。 >こんなところかな・・・ で、上記処理をすると、一体、何がどうなるんでしょうか?(汗) 肝心なことが分からなくて困ってしまいました。 何らかのカタチで問題は解決されるのでしょうが、どう解決されるのかが分からないので、教えて頂けると助かります。 ちなみに、私はapache等の知識は皆無ですので、分かりやすく教えて頂けるとありがたいです。。 よろしくお願いします。

noname#98692
noname#98692
回答No.1

ドメインを取得されているか、サブドメインによるサービスを利用されているなら、(言い換えると、 http://example.com/~yourname/ という形式でないのなら) 全ての URL を / から始まるものに書き換えるのが手っ取り早いです。 /about.html /help/index.html としておけば、 http://localhost/about.html http://localhost/help/index.html にも http://example.com/about.html http://example.com/help/index.html にもなります。 どうしても、http://localhost/example.com/ にしないといけない、もしくは変更の仕方がわからないのであれば、Apache のドキュメントルートの設定に問題があると思います。(XAMPP のデフォルトの設定がどうなっているかは、知りませんが、中身は Apache なので) 質問の意図を取り違えていたらすみません。

march4
質問者

お礼

ありがとうございました(^^) また何かありましたら、教えて下さいね。

march4
質問者

補足

早速の回答、ありがとうございます。 >全ての URL を / から始まるものに書き換えるのが手っ取り早いです。 まだ試していませんが、この方法はなかなかグッドな気がします。 ただし、複数のサイトを同様に管理したいので、これだと難しいのかな?と思っています。 つまり、example.netや、example.infoなどのサイトにおいても、同様にローカルテストをしたいと思っているのです。 http://example.com/about.html http://example.net/about.html http://example.info/about.htmlhttp://localhost/about.html というように、1:1対応でなくなってしまいますからね。。。 その意味で、 >どうしても、http://localhost/example.com/にしないといけない ということになるのかもしれません。 ドメインについては、独自ドメインを取得しています。 読みやすく理解しやすい回答をありがとうございます!

関連するQ&A

  • 絶対パスと相対パスはどちらがいい?

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

    • ベストアンサー
    • HTML
  • 本番環境とテスト環境のURL

    下記の環境があります。 本番環境 http://aaa.com/ テスト環境 http://bbb.com/ ページ内のリンクでhttpsを使うところがあり、 相対パスでリンクを書くことが出来ません。 なのでテスト環境のHTMLにはhttps://bbb.com/という リンクを書くのですが、これだと本番環境に HTMLを持っていったときに使えないため 書き換えなければなりません。 aaaの部分を何か共通のファイルで持たせるなりして 本番環境でもテスト環境でも同じHTMLファイルを 使いたいのですがよい方法はありませんでしょうか? aspやjsp等を使うことは出来ません。 JavaScriptは使えます。 SSIは使えます。

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

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

  • 相対パスで別なサイトを参照できますか?

    http://www.example.com/abc/index.html というページがあるとします。 そのページから、次のように別な階層にリンクしているとします。 <a href="/def/">あいうえお</a> このリンク先 "/def/" の後に文字を付け足して、 別なサイトを参照することは可能でしょうか? 分かりにくい質問で申し訳ありません。 つまり、http://www.example.com/def/ 内のファイルを指定していながら、 別なドメインのサイトにリンクすることは可能でしょうか?という質問です。 なお、絶対パスで指定することや、 別なサイトに転送されるページを作るといった選択肢は除きます。 URLに文字を足すだけでは実現できないのでしょうか。 ご回答よろしくお願い致します。

  • SSLに対応させるページの、ローカル環境化テスト

    SSL対応ページについて質問です。SSLに対応させるページはリンクや画像などすべてフルパスにするということで、そのように対応させました。しかしそれだとローカル環境でのテストができません。 ローカル環境では、http://localhost:8888/www.xxxxx.com/ のような内部でテストを行いたいのです。 一般的にSSLに対応させる場合、WEB管理者はどのようにページを管理し、テストしているのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • CSS
  • サイト内リンクは絶対パスと相対パスとどちらが

    SEO観点で見た時に サイト内リンクは絶対パスと相対パスとどちらが良いのでしょうか? 地震のサイトがhttp://test.web.fc2.comの場合 <a href="/test.html">test</a> でいいのか <a href="http://test.web.fc2.com/test.html">test</a> の方が良いのか、教えてください。

    • ベストアンサー
    • SEO
  • C# ローカルにあるhtmlの相対パスでの表示

    C#webBrowserでローカルにあるhtmlを相対パスで表示させたいです。 exeファイルと同じフォルダにtest.htmlを置いたとして、 webBrowser1.Navigate(@".\test.html")とすれば出来ると思ったんですが出来ません。 ご教授頂ければ助かります。

  • 相対パスのことでわかる方教えてください

    htmlの相対パスのことで質問です。 index.htmlのログインボタンに相対パスで「./」のリンクを つけました。 同じ階層にindex.phpファイルをおいているのですが、 index.htmlのログインボタンを押すと、index.phpに 飛んでいきます。 相対パスの「./」はindex.htmlを優先すると思ったの ですが、index.phpを優先するのでしょうか。

  • 絶対パス 相対パス SSL https

    無知な者ですので質問も稚拙かもわかりませんが よろしくお願いいたします。 現在、WEBサイトを制作する際に SSLで暗号化されたページにリンクする場合、 相対パスでリンクするとURLが「https://~」ではなく 「http://~」となってしまう為、 「https://~」と絶対パスでリンクしています。 これを相対パスでリンクさせる方法がありますでしょうか? もしございましたら、お手数ですがお教え願えますでしょうか? よろしくお願いいたします。

  • javascript 相対パス表示

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

専門家に質問してみよう