バーチャルホストを設定する
※当サイトは、アフィリエイト広告を掲載し、収益を得て運営しています。
ローカルでテストサーバーを立てると、http://localhost/でアクセスできるようになります。この方法で複数のサイトをテストするには、一つ目のサイトがhttp://localhost/hogefoobar1.co.jp/ で、二つ目のサイトが http://localhost/hoagefoobar2.co.jp/ という具合になるでしょうか。しかし、このような方法は一つ問題点が出てきます。それは、本番サーバーと階層が異なってしまうということです。
たとえば、本番のURIがhttp://www.hogefoobar1.co.jp/というサイトだったとします。これを先ほどの方法でローカル管理するには http://localhost/hogefoobar1.co.jp/ ということになるでしょう。しかしそれでは公開ディレクトリからの階層が異なるため、[ / ]から始まる絶対パス指定がくるってしまいます。これでもテストすることは可能ではありますが、できるだけ本番に近い形でテストした方が便利なことも多いでしょう。
そんな時に使われるのがバーチャルホスト(VirtualHosts)という機能です。この機能を使えば、例えばローカルのテストでは http://local.hogefoobar.co.jp/、本番サーバではhttp://www.hogefoobar.co.jp/などのようにアクセスすることができるようになります。実際のディレクトリ構造と同じくできるので、テストする際にも便利ですよね!このページでは、そんな非常に便利なバーチャルホストの設定方法について説明します。
当サイトに記載されているものは、全て学習目的のローカルテストサーバー向けです。その他の用途には適切でない可能性もありますのでご注意下さい。
バーチャルホストの設定方法
今回は下記のような状態を、
http://www.hogefoobar.co.jp/
■テストサーバ
http://localhost/hogefoobar.co.jp/
■サイトのデータが入っているローカルのディレクトリ
D:/www/hogefoobar.co.jp
下記のように変更するという前提で話を進めていきます。
http://www.hogefoobar.co.jp/
■テストサーバ
http://local.hogefoobar.co.jp/
■サイトのデータが入っているローカルのディレクトリ
D:/www/hogefoobar.co.jp
バーチャルホストの設定ファイルを開く
まずはバーチャルホストの設定ファイルを開きます。まずはhttpd.confを検索機能付きのエディタで開いてください。開いたら、
でファイル内を検索します。もし検索で見つからなかったらこのままhttpd.confをいじりますので、ファイルの一番最後など、分かりやすい位置に移動し、次の項目に進んでください。
見つかった方は、大体下記のような表示になっているでしょうか(右側のパス部分は多少異なることもあるかもしれません)。
該当行の#を削除して、httpd.confを保存します(もともと#がついていなければそのままでOKです)。そして赤文字部分に記載されているファイルパス(httpd.confからの相対パスです)を頼りに、そのファイル[ httpd-vhost.conf ]を開きます。これからの説明は、httpd-vhost.confをいじってください。
# Include conf/extra/httpd-vhosts.conf
■変更後
Include conf/extra/httpd-vhosts.conf
バーチャルホストの設定をする
下記のような文字をファイル内に貼り付けてください。なお、灰色の文字は任意のメールアドレス、青文字は、サイトのデータが入っているディレクトリ、赤文字は、今回ローカル環境でアクセスしたい任意のホスト名です。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin example@example.jp
DocumentRoot "D:/www/hogefoobar.co.jp"
ServerName local.hogefoobar.co.jp
ErrorLog "logs/local.hogefoobar.co.jp"
</VirtualHost>
※<VirtualHost *:80>~</VirtualHost>を複数設置することで、複数のバーチャルホストを設定することが可能です。
上記の設定を簡単に説明すると、http://local.hogefoobar.co.jpでアクセスしたときは、DocumentRootはD:/www/hogefoobar.co.jpですよ、ということを設定しているということです。上記でいったんファイルを保存してください。
localhostも併用したい場合
バーチャルホストの設定をすると、http://localhost/~でアクセスした際に、意図したページが表示されなくなる可能性があります。特にXAMPPをご利用の方は、XAMPPの管理画面にアクセスできなくなる可能性があります。これを回避するには、NameVirtualHost *:80の下に、localhostを明示的に指定してあげてください。
■設定例(DocumentRootは状況に応じて変更してください):
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
</VirtualHost>
hostsファイルを修正する
http://local.hogefoobar.co.jpでアクセスしたとき、と言いましたが、実際にはそんなアドレスは存在しません。どうやってそのURIをローカルサーバに向けるかというと、ローカルPCにて、IPアドレスとホスト名のマッピングをすればいいのです。それを行うファイルがhostsファイルです。hostsファイルを修正して、そのコンピュータからのアクセスのみ、http://local.hogefoobar.co.jpを、自分のコンピュータに向けるようにします。
hostsファイルの場所
Windowsでは、下記の場所にあります。VISTA以降では、hostsファイルを書き込む際に、管理者権限が必要となります。編集に使用するテキストエディタを起動するときに、右クリックして表示されるメニュー(コンテキストメニュー)から、「管理者として実行」してテキストエディタを起動させ、その後hostsファイルを読み込んでください。なお、ファイルの拡張子がないので驚かれるかもしれませんが、普通のテキストエディタで大丈夫です。
Macでは、下記にありますがhttpd.confと同様、ファインダーではやや行きづらい場所にあります。また、保存には管理者権限も必要になります。基本的には、httpd.confと同様の方法を用いて変更してください。
hostsファイルの修正箇所
ファイルの一番下の方に追加する形で、下記を入力します。
なお、127.0.0.1とlocal.hogefoobar.co.jpの間はタブまたは半角スペースで区切ってください。それが終了したら、hostsファイルを保存し、Apacheを再起動します。
その後、ブラウザのアドレスバーにhttp://local.hogefoobar.co.jp/ と入力して、ローカルのサイトが表示されたら完了です!
一文字でも間違うとダメ
私もよくやりますが、ほんの一文字でも間違ってしまうとうまくいきません。もし上記でうまく行かない場合は、設定ミスがないかをよく確認してください。また、hostsが反映されるまでに多少時間がかかる場合があります。念のためブラウザを再起動してみるのもいいでしょう。
ネットワーク上の他PCからバーチャルホストでアクセスする方法
これでバーチャルホストでのアクセスはできたと思いますが、実は完全ではありません。というのも、今回設定をしたPCからは問題なくバーチャルホストでアクセスできるのですが、ネットワーク上の他PCからは、バーチャルホストでアクセスできないからです。
もちろん、PCは一台だけという場合や、ネットワーク上からはアクセスできなくていいという場合は、このままでも問題ありません。ここから先は、複数のローカルPCで表示したい方のみ、設定してください。
まずは確認
まずはローカルネットワークでつながったPCから、http://local.hogefoobar.co.jp/のようにバーチャルホストでアクセスして、表示できないことを確認してみてください。これがなぜ表示されないかと言えば、local.hogefoobar.co.jpに対応するIPアドレスが、どこにも登録されていないからです。
そんな場合には、先ほども登場したhostsファイルを使います。ネットワーク上からバーチャルホストでアクセスしたいそれぞれのPCのhostsファイルを、下記のように修正します。
サーバをインストールしたPCのIPアドレスが、192.168.1.2だとすると、下記のようになります。
ちなみに、IPアドレスは、Windowsなら、コマンドプロンプトから、ipconfigと打てば、下記のように出てきます。(スタート→全てのプログラム→アクセサリの中にコマンドプロンプトはあります)
Macなら、システム環境設定のネットワークから、確認できます。
これで、local.hogefoobar.co.jpでリクエストした際に、ローカルサーバにアクセスすることになり、無事ネットワーク上のPCでも表示できるようになります。
12/06/30 facebookページ開設しました。RSS代わりにも使いたいと思います。
コメント
- mizuho さん 2010年09月20日14時33分
はじめまして。 独学でいろいろ勉強している者です。 今回xamppの設定におきまして、こちらのサイトを活用させていただきました。 こちら丸っきりの素人ですが、とてもわかりやすく感謝しております。 ありがとうございます。 さて、xamppも無事動くことが確認できたのでこのページのバーチャルホストに挑戦してみました。 ご教示どおりの設定でバーチャルホストには成功したのですが、今度はxamppの動作確認ページ【http://localhost/xampp/】が開かなくなってしまいました・・・ system32 の hosts を変更したことによっての症状なのでしょうか? バーチャルホストを設定してしまうと開けなくなってしまうのでしょうか? xampp と 作業用のディレクトリの場所の関係性がいけないのでしょうか? いろいろな参考文献を見ながら勉強しており、この動作ページを開く指示が多々あり、どうしたらよいかと・・・ お忙しいところ恐縮ですが、バーチャルホスト設定を維持しつつ動作確認ページが見れる方法がありましたら教えていただけると幸いです。 環境 【OS】Windows7(64) 【xampp】ver.1.7.3 【設置ディレクトリ】 [xampp] D:XAMPP [ローカルディレクトリ] D:www:directory
- 馬場誠 さん 2010年09月21日20時41分
mizuhoさん、こんばんは。 XAMPPのページが開かなくなったのは、バーチャルホストを設定したせいだと思われます。 試しにlocalhostをデフォルトホストとして登録してみてください。 D:\xamppにXAMPPをインストールした状態であれば、 httpd-vhosts.conf内に下記を追加します。 <VirtualHost *:80> ServerName localhost DocumentRoot "D:/xampp/htdocs" </VirtualHost> ※他のバーチャルホスト設定よりも上に追加してください。 ※もしXAMPPのDocumentRootが異なる場合は、実際の状況に合わせて読み替えてください。 上記で表示されない場合は、別に問題があるのかもしれません。 私は普段単品のApacheを使っているので気がつきませんでしたが、 XAMPPの場合、重要なことですよね。 配慮が足りず、申し訳ありませんでしたm(__)m (記事内にも、補足させていただきました)
- mizuho さん 2010年10月18日06時09分
馬場様 ご報告遅れましたこと、お詫び申し上げます。 さて、ご教示いただいたとおり設定いたしましたところ、ちゃんと表示させることができました!! 本当にありがとうございました^^
- 馬場誠 さん 2010年10月19日08時05分
mizuhoさん、こんにちは。 うまくいったようで良かったです! 個人的なコメントの方も拝読させていただきました。 こちらは別途メールでご返信させていただきますね!
- クルット さん 2011年02月18日06時17分
おはようございます。たびたび質問して申し訳ありません。 バーチャルホストの設定をしてからローカルサイトが表示できなくなりました。 多分↓この部分が間違っているような気がします。 説明を見てhttpd-vhost.confのデータの●部分に貼り付けたんですが・・・。 <VirtualHost *:80> ● ServerAdmin example@example.jp ● DocumentRoot "C:/www/hogefoobar.co.jp" ● ServerName local.hogefoobar.co.jp ServerAlias www.dummy-host.localhost ● ErrorLog "logs/local.hogefoobar.co.jp" CustomLog "logs/dummy-host.localhost-access.log" common </VirtualHost> (ドキュメントルートはDがない為Cで作成しました) もしかしていじったらダメだったのでしょうか? それとも、この下にもうひとつ同じようなhost2になっている表記があるのですがこちらも変更しないといけないのでしょうか? <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.localhost DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host2.localhost" ServerName dummy-host2.localhost ErrorLog "logs/dummy-host2.localhost-error.log" CustomLog "logs/dummy-host2.localhost-access.log" common </VirtualHost> ご指摘お願いします。
- 馬場誠 さん 2011年02月18日21時11分
クルットさん、こんばんは。 ご呈示いただいた部分のみを見る限りでは、特別気になるところはありませんね。 状況がよくわからないので、どのように表示できないのかを確認させていただいてもよろしいでしょうか? 先日Apacheの初期httpd.confに置きかえられたばかりだと思いますが、その時はhttp://localhost/で表示できたと思います。 今回バーチャルホストを設定されたとのことですが、バーチャルホストでアクセスしても、表示ができないのでしょうか。 (※今回の設定例だと、バーチャルホストでのアクセスは下記のようになります) http://local.hogefoobar.co.jp/ それとも、http://localhost/の表示ができなくなったということでしょうか。 http://local.hogefoobar.co.jp/の方は表示できる、もしくは両方とも表示できない等といった情報をいただけたらと思います。 また、それぞれ表示できない際に、何らかのメッセージ(Not FoundやForbidden等)が画面に表示されていれば補足をお願いします。 ※なお、host2の方は設定例ですのでそのままでも問題ありませんが、使わないものなので、#でコメントアウトしておいてもいいかもしれませんね。
- クルット さん 2011年02月19日10時08分
つたない文章で申し訳ありませんでした。 ドキュメントルートの設定までは接続されていました。 バーチャルホストの設定をしてからは http://local.hogefoobar.co.jp/ http://localhost/ どちらにアクセスしても「Webページがみつかりません」の表示がでるようになりました。
- 馬場誠 さん 2011年02月19日14時56分
補足拝見しました。 念のため確認なのですが、ドキュメントルートに、index.htm(またはindex.html)は配置されていますでしょうか。 httpd.confのDocumentRootがどう設定されているか分からないので、ここでは便宜上C:/wwwだと仮定すると、C:/www/index.htm と、C:/www/hogefoobar.co.jp/index.htm が正しく配置されているかを今一度確認してみてください。 上記に問題が無いようであれば、問題を切り分けるため、http://localhost/で表示できるところまで一旦戻してみるといいでしょう。 httpd.confでは現在 Include conf/extra/httpd-vhosts.conf となっていると思いますが、先頭に#を付けて、バーチャルホストの設定を読み込まないようにします。 それでhttp://localhost/にて意図したファイル(httpd.confのDocumentRoot/index.htm)が表示できれば、バーチャルホスト関連に問題があることが確定できます。 もしそれで表示ができなかったら、httpd.conf自体にも問題がある可能性があります。 その場合、ドキュメントルートを変更するを参考に、設定の再チェックをしてみてください。 バーチャルホスト関連に問題があることが分かれば、また別のアドバイスができると思います。問題切り分けのため、ひとまず上記をお試しください。
- クルット さん 2011年02月20日07時48分
返答ありがとうございました。 ただ返答の部分に分からない所があるので教えてもらってもいいでしょうか? ドキュメントルートに、index.htm(またはindex.html)は配置されていますでしょうか。 httpd.confのDocumentRootがどう設定されているか分からないので、ここでは便宜上C:/wwwだと仮定すると、C:/www/index.htm と、C:/www/hogefoobar.co.jp/index.htm が正しく配置されているかを今一度確認してみてください。 の事なのですが、httpd.confのドキュメントルールは ●DocumentRoot "C:/www" ●<Directory "C:/www"> と設定しています。なのでindex.htm(またはindex.html)は配置してませんでした。これを ●DocumentRoot "C:/www/index.htm C:/www/hogefoobar.co.jp/index.htm" ●<Directory "C:/www/index.htm C:/www/hogefoobar.co.jp/index.htm"> と二つ入れて変更したらいいとゆうことですか? ためしにやってみたのですがApache自体が起動しなくなりました。 正しく配置とはどうゆうことでしょうか? たびたびで申し訳ありませんが教えて下さい。
- 馬場誠 さん 2011年02月21日01時25分
httpd.confのドキュメントルートが DocumentRoot "C:/www" と設定されているとのことなので、WindowsのフォルダをC:/www/とたどっていって、そこに表示させたいindex.htmファイルが置いてあるか、ということです。 同様に、WindowsのフォルダをC:/www/hogefoobar.co.jp/とたどって、こちらにもindex.htmファイルがあることをご確認ください。 今回ためしに変更された部分は変更前が正しいので、もとに戻してくださいね。
- クルット さん 2011年02月21日05時55分
おはようございます。 やはりindex.htmファイルを配置してないことが原因でした。 両方とも表示できるようになりました。 ありがとうございました。
- K.K さん 2011年07月25日09時28分
とてもわかりやすい情報を公開していただいて感謝しております。 以下いきなり質問なのですが、よろしくお願い致します。 こちらのHPを見ながら なんとか自宅のMac内にMAMPをインストール、 バーチャルホストで3つのサイトを作成。 その内ひとつでWordPressを動作させる。 ところまではうまく行ったのですが MAMPをインストールしたMacからは3つのサイト全て 1. http://local.hogehoge.jp 2. http://local.hogehoge2.jp 3. http://local.hogehoge3.jp でそれぞれブラウザで表示できるものの、同じネットワークにある他のPCからは http://l192.168.168.6(MAMPのアドレス)と入力し http://local.hogehoge.jpの内容しか表示できないのです 2と3のHPを表示できるようにする方法が分かりません。 記事「外部からのアクセスを制限する」の #Order Allow,Deny #Allow from all Order Deny,Allow Deny from all Allow from localhost 127.0.0.1 Allow from 192.168 も追加したのですがダメなようです。 何か別のファイルを設定が必要でしょうか?
- K.K さん 2011年07月25日12時00分
先ほどバーチャルホストの設定について質問しましたが 質問内の Allow from localhost 127.0.0.1 は127.0.0.1を入れるとMAMPを入れたPCからも local.hogehoge.jpにアクセス出来なくなってしまうため Allow from localhost までに変更してテストしていた状況でした。
- 馬場誠 さん 2011年07月25日22時29分
K.Kさん、こんばんは。 名前ベースでバーチャルホストが設定されていますので、IPアドレスでアクセスした際に、デフォルトホストである http://local.hogehoge.jp が表示されてしまっているのだと思います。 例えば、バーチャルホストの設定が下記だったとします。 ~中略~ ServerName local.hogehoge.jp DocumentRoot "D:/www/hogehoge.jp" ~中略~ 名前ベースというのは、上記で言えばhttp://local.hogehoge.jp でリクエストされたときに、D:/www/hogehoge.jpを表示するという仕組みです。 ですので、同一ネットワーク上のPCからアクセスする際も、 http://local.hogehoge.jp http://local.hogehoge2.jp http://local.hogehoge3.jp というようなURIでリクエストをする必要があります。 それには、それぞれのPCのhostsファイルを修正する方法が簡単です。 MAMPがインストールされているPCのIPアドレスが192.168.168.6であれば、それ以外の全てのPCのhostsファイルに、下記のような記述を追加してみてください。 192.168.168.6 local.hogehoge.jp 192.168.168.6 local.hogehoge2.jp 192.168.168.6 local.hogehoge3.jp これでおそらくいけるはずです。 なお、もうすでにアクセス制限の設定をされていると思いますが、ローカルネットワークからのアクセスを許可しなければなりませんので、ローカルのIPアドレスが192.168~だと仮定すると、 Allow from 192.168 という設定は必須です。 もしうまくいかない場合は、問題切り分けのために、最初はアクセス制限無しでやってみるのもいいかもしれません。
- K.K さん 2011年07月26日05時56分
解決致しました! あちこちの解説サイトも見ていたせいでポート番号あたりを設定するのだと思い込み Apacheごと起動しなくなったりと、壁にぶち当たっていたのですが、 馬場さんのご指摘どおり、hostsファイルの設定をしたところ ルーター下ローカルネットワーク内 |-MAMP(Macbook) 192.168.168.6 |-NotePC1 192.168.168.10 |-NotePC2 192.168.168.11 のすべてのPCから テスト中のバーチャルホストにURLでアクセス出きるようになりました。 以下、私の環境での最終的なhostsの内容です MAMPを入れたMacのhosts 127.0.0.1 local.hogehoge.jp 127.0.0.1 local.hogehoge2.jp 127.0.0.1 local.hogehoge3.jp その他PCのhostsは全て 192.168.168.6 local.hogehoge.jp 192.168.168.6 local.hogehoge2.jp 192.168.168.6 local.hogehoge3.jp という内容になりました。 本当に有難うございました。
- K.K さん 2011年07月26日18時24分
MAMPをいれたPCと、ローカルネットワークにつながったPCの どこからでも編集したバーチャルホストのページにアクセスしたい場合の補足です MAMPインストールフォルダ/conf/Apacheにあるhttpd.conf 内に Allow from 192.168 Allow from 127.0.0.1 Allow from localhost と行を分けて書いたほうが良いみたいです。 こちらのホームページをもとに 少しでも多くの方がWebデザインを始められるようになるといいですね!
- 馬場誠 さん 2011年07月26日19時59分
お役に立てたようで何よりです☆ よく考えると、同じようなことを実現されたい方は多いと思いますので、時間があるときにでも、当ページの解説に加えておきたいと思います。 新たな気づきをいただき、こちらこそ感謝です(^-^)
> 行を分けて書いたほうが良いみたいです。
執筆時に、併記できることをApacheマニュアルで確認したのですが、環境やバージョン、パッケージソフト等によって異なるのかもしれませんね。 こちらも補足したいと思います。 教えてくださってありがとうございます!- amorphis さん 2013年08月27日10時48分
l----ocalhostも併用したい場合 とありますが、案の定その症状が出てしまったみたいです。 とりあえず環境はwindows7 32bit apacheは2.2.25です。 変更したところ httpd.conf側 DocumentRoot "C:/www" <Directory "C:/www"> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory "C:/www"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory> # Virtual hosts Include conf/extra/httpd-vhosts.conf httpd-vhost.conf側 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/www" ServerName localhost </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "C:/www1" ServerName vh1.localhost ServerAlias www.dummy-host. <Directory "C:/www1"> Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all </Directory> ErrorLog logs/vh1-error.log CustomLog logs/vh1-access.log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "C:/www2" ServerName vh2.localhost ServerAlias www.dummy-host. <Directory "C:/www2"> Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all </Directory> ErrorLog logs/vh2-error.log CustomLog logs/vh2-access.log common </VirtualHost> です、上記の解決策で <VirtualHost *:80> ServerName localhost DocumentRoot "C:/www" </VirtualHost> をvhostの NameVirtualHost *:80 のすぐ下に書き込んだのですが、www1のhtmlを見に行ってしまいます。 どこが問題なのかがよく解らなくて… httpd.conf側の <Directory "C:/www"> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> 勿論、hostsファイルの書き換えもしました。 これが何の役割をはたしているかも不明ですが、webのサンプルなどを 見るとこうなっているので踏襲しただけす。ここが解らないから localhostが見れないのかも知れません。 どうか、私に良い知恵を与えてください!
- 馬場誠 さん 2013年08月28日08時03分
amorphisさん、こんにちは。 バーチャルホストの設定前はlocalhostで閲覧できていたのが、設定したらlocalhostが見られなくなった……という状態ですよね。 挙げていただいた部分をざっと拝見する限りでは、ソースに問題はなさそうです。 ※ただ、本件とは関係無いと思いますが、<Directory "C:/www">~</directory>の項目が二つあるように見えます。そうであれば、最初の<Directory "C:/www">はおそらく<Directory />ではないですか?(あくまで部分的に書き出されているものを見ただけですので、ご自身でチェックしてみてください) ただ、ブラウザによってはキャッシュか何かを読んでしまうのか、即座に反映されない場合があります(Firefoxで確認)。ブラウザの再起動もしてみてください。また、こちらは行っていらっしゃると思いますが、Apacheの再起動も必要です。 それでもだめな場合は、いったんすべて修正前に戻して、1つの変更ごとに動作確認(起動確認)されるのがいいでしょう。 最初はlocalhostのバーチャルホストを設定して動作確認、その後vh1を設定して動作確認、次はvh2と、1箇所ずつ設定&チェックされるのがお勧めです。
- 零 さん 2013年11月18日10時14分
質問失礼します。 以前質問させていただいたものです。 ローカルでのテストサーバーを用意したくて、 再度、XAMPPをインストールしました。 サイトに書かれている通りに進めていったのですが、 「バーチャルホストを設定する」 のページでつまづいてしまったので 質問させていただきます。 Apacheも問題なく起動し、 DocumentRootを"D:/www"に設定し、 「www」の中に「index.php」を入れた際、 「http://localhost/」で問題なく phpの処理が行われるところまで進みました。 「httpd.conf」内の Include conf/extra/httpd-vhosts.confの前に 「#」がついてない事を確認し、 「httpd-vhost.conf」の最後に、 NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost DocumentRoot "C:/www" </VirtualHost> <VirtualHost *:80> ServerAdmin example@example.jp DocumentRoot "C:/www/hogefoobar.co.jp" ServerName local.hogefoobar.co.jp ErrorLog "logs/local.hogefoobar.co.jp" </VirtualHost> を追加して保存しました。 その後に、 C:\WINDOWS\system32\drivers\etc\hosts 内の最後部に、 「127.0.0.1 local.hogefoobar.co.jp」 が記載されている事を確認した上で、 「http://local.hogefoobar.co.jp/」に接続した際、 Object not found! と繋がらない状態となってしまいました。 手順としては間違っていないでしょうか? ちなみに、上記の状態で、 「http://localhost/」にアクセスした際は 問題なくindex.phpは表示されます。
- 馬場誠 さん 2013年11月18日21時11分
零さん、こんばんは。 Object not found!とありますので、ファイルが見つからないという意味のエラーメッセージとなります。 このメッセージが表示されるということは、hostsファイルが正しく設定されており、リクエストがローカルのXAMPPに向いていると推測されます。 記載いただいた内容を拝見する限りでは、記述内容であきらかに間違いと言える箇所はなさそうです。 考えられる点としては、 C:/www/hogefoobar.co.jp の中に、ファイル(index.htmや、index.php等)が存在していますでしょうか? 先ほどの通り、ファイルが見つからないというエラーなので、そのあたりに解決の糸口がありそうです。
- 零 さん 2013年11月18日22時27分
ご回答ありがとうございます。 「C:/www/hogefoobar.co.jpの中」というのは、 Cドライブ内にある「www」フォルダの中に「index.php」のファイルを入れていますか? という認識で宜しいのでしょうか? 「www」というフォルダの中に「index.php」いうファイルを入れております。 上記の状態でアドレスバーに 「http://localhost/」と入力すると、 ブラウザ上に「index.php」で記載した内容は問題なく表示されております。 「http://local.hogefoobar.co.jp/」と入力した場合は「Object not found!」と表示されてしまいます。 ちなみに「htdocs」内に「index.php」のファイルは存在しない為、 ドキュメントルートはしっかり「www」に変更されている事は確認済みです。 どこかおかしい部分はありますでしょうか? よろしくお願いします。
- 馬場誠 さん 2013年11月18日23時16分
> 「C:/www/hogefoobar.co.jpの中」というのは、
> Cドライブ内にある「www」フォルダの中に「index.php」のファイルを入れていますか?
> という認識で宜しいのでしょうか?
いえ、 Cドライブ内のwwwフォルダ内に、hogefoobar.co.jpというフォルダが存在し(作成し)、その中に表示させたいファイル(index.php等)を入れていますか?という意味です。 バーチャルホストの設定で、 ServerName local.hogefoobar.co.jp DocumentRoot "C:/www/hogefoobar.co.jp" という欄がありますが、これは、 local.hogefoobar.co.jpというバーチャルホスト名でリクエストされた場合は、ドキュメントルートを C:/www/hogefoobar.co.jp にしてください、という意味です。 つまりこの場合、 http://local.hogefoobar.co.jp/index.php でリクエストした場合は、(↑index.phpはサーバの設定次第で省略可能) C:\www\hogefoobar.co.jp\index.php を表示することになります。 バーチャルホストでリクエストされた場合に対応するファイルが存在しないため、Object not found!(ファイルが見つからない)というエラーが出ているのかな!?と推測した次第です。- 零 さん 2013年11月19日09時21分
勘違いしておりました^^; 「www」の中に「hogefoobar.co.jp」というフォルダをいれ、 そのフォルダに「index.php」を入れると、 http://local.hogefoobar.co.jp/index.php で正常に反映され、表示される事を確認しました。 わかりやすい説明、ご回答、ありがとうございました^^
- 馬場誠 さん 2013年11月19日21時14分
解決して良かったです(^-^) 別途メールの件も、ありがとうございます。まとまった時間がとれたときに、じっくり拝見させていただきますね!
- イラつく男 さん 2015年03月27日13時04分
C:\WINDOWS\system32\drivers\etc\hosts 書き込んだところ、保存する権限がありませんってエラーメッセージが帰ってきてます。 解決できる糸口はありますか。
- 馬場誠 さん 2015年03月27日18時39分
hostsファイルの保存には、管理者権限が必要です。 hostsファイルを編集するテキストエディタを起動する際、右クリックメニューから「管理者として実行」で起動し、hostsファイルを読み込み&修正・保存してみてください。 ※「管理者として実行」については当ページの「hostsファイルを修正する」に記載してはありましたが、読み返すと少しわかりづらかったため、表記を修正しました。 気づきをくださってありがとうございます。
- 初心者トマト さん 2024年12月27日09時15分
この設定でも動きますが違いを教えてください。 httpd.conf # Virtual hosts Include conf/extra/httpd-vhosts.conf ======================================================================================= httpd-vhosts.conf NameVirtualHost *:80 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 一番下の行 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <VirtualHost *:80> DocumentRoot "D:\サイト保管フォルダ\サイトA" ServerName localhost-siteA.com </VirtualHost> <Directory "D:\サイト保管フォルダ\サイトA"> Options Indexes FollowSymLinks ExecCGI AllowOverride All Require all granted </Directory> =========================================== hoses 127.0.0.1 localhost-siteA.com
- 馬場誠 さん 2024年12月27日09時30分
こんにちは。 Apacheの設定ファイルは、ある程度柔軟に書けます。 例えば、<Directory>ディレクティブを<VirtualHost>内に含めることも可能ですが、どちらでも動作しますので好みの問題と言って良いと思います。 よって正しく動作していれば気にされる必要はありません。 また、本サイトのアップデートができておらず恐縮なのですが、Apache 2.4以降ではNameVirtualHost *:80は非推奨の設定ですので、削除してOKなはずです。
↓もし参考になりましたら、シェアしていただけると嬉しいです(^-^)