dポイントプレゼントキャンペーン実施中!

初歩的な質問かもしれませんが、よろしくお願いします。

現在、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ファイルもアップすることがあります。

A 回答 (4件)

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

この回答への補足

回答ありがとうございます。

「バーチャルホスト」の設定で解決できるのでは、というアドバイスをありがとうございます。

早速、この方向でググってみます!

補足日時:2009/02/28 20:11
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:28

# 私は 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の例が書かれていたので、回答も書きやすかったです。 ありがとうございます。

この回答への補足

回答をありがとうございます。

>"../dir2/bar.html" は、http://example.com/dir1/foo.html​ から ​http://example.com/dir2/bar.html への相対URLとしても正しい

そうですね、
「1つ上に上がって、水平移動して、1つ下に下がる」
なんていう相対パスならば問題なさそうなのですが。。。

>あなた自身がローカルにWebサーバーをインストール/セットアップする際に選択した結果では無いでしょうか?

おそらく、そうなんだと思うのですが、apacheの設定がよく分からなかったもので、、、このように迷子になっています。

>他の本番サーバーのためのテストにも対応したいなら上級者向けの設定が必要に

複数のサイトを同様に管理しようと思っているので、回答#3さんのアドバイス「バーチャルホスト」の設定というのを調べてみようと思います。

また何かありましたら、よろしくお願いします。

補足日時:2009/02/28 20:21
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:28

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サーバーの標準的な配置でインストールしている。

この回答への補足

回答をありがとうございます。
私には、ちょっと難解でしたので、補足的に質問をさせて頂きます。

>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等の知識は皆無ですので、分かりやすく教えて頂けるとありがたいです。。
よろしくお願いします。

補足日時:2009/02/28 18:38
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:28

ドメインを取得されているか、サブドメインによるサービスを利用されているなら、(言い換えると、

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 なので)

質問の意図を取り違えていたらすみません。

この回答への補足

早速の回答、ありがとうございます。

>全ての URL を / から始まるものに書き換えるのが手っ取り早いです。

まだ試していませんが、この方法はなかなかグッドな気がします。
ただし、複数のサイトを同様に管理したいので、これだと難しいのかな?と思っています。
つまり、example.netや、example.infoなどのサイトにおいても、同様にローカルテストをしたいと思っているのです。

http://example.com/about.html
http://example.net/about.html
http://example.info/about.html

http://localhost/about.html

というように、1:1対応でなくなってしまいますからね。。。

その意味で、

>どうしても、http://localhost/example.com/にしないといけない

ということになるのかもしれません。

ドメインについては、独自ドメインを取得しています。

読みやすく理解しやすい回答をありがとうございます!

補足日時:2009/02/28 18:10
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/10 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!