Apache(アパッチ)のVirtualHostにより、より本番に近い環境でテスト環境を構築する方法をご紹介します。
独学!未経験からWebデザイナーになる!! > テクニカルノート > テスト用Webサーバーの設定 > バーチャルホストを設定する
※当サイトは、アフィリエイト広告を掲載し、収益を得て運営しています。
ローカルでテストサーバーを立てると、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/などのようにアクセスすることができるようになります。実際のディレクトリ構造と同じくできるので、テストする際にも便利ですよね!このページでは、そんな非常に便利なバーチャルホストの設定方法について説明します。
当サイトに記載されているものは、全て学習目的のローカルテストサーバー向けです。その他の用途には適切でない可能性もありますのでご注意下さい。
今回は下記のような状態を、
下記のように変更するという前提で話を進めていきます。
まずはバーチャルホストの設定ファイルを開きます。まずはhttpd.confを検索機能付きのエディタで開いてください。開いたら、
でファイル内を検索します。もし検索で見つからなかったらこのままhttpd.confをいじりますので、ファイルの一番最後など、分かりやすい位置に移動し、次の項目に進んでください。
見つかった方は、大体下記のような表示になっているでしょうか(右側のパス部分は多少異なることもあるかもしれません)。
該当行の#を削除して、httpd.confを保存します(もともと#がついていなければそのままでOKです)。そして赤文字部分に記載されているファイルパス(httpd.confからの相対パスです)を頼りに、そのファイル[ httpd-vhost.conf ]を開きます。これからの説明は、httpd-vhost.confをいじってください。
下記のような文字をファイル内に貼り付けてください。なお、灰色の文字は任意のメールアドレス、青文字は、サイトのデータが入っているディレクトリ、赤文字は、今回ローカル環境でアクセスしたい任意のホスト名です。
※<VirtualHost *:80>~</VirtualHost>を複数設置することで、複数のバーチャルホストを設定することが可能です。
上記の設定を簡単に説明すると、http://local.hogefoobar.co.jpでアクセスしたときは、DocumentRootはD:/www/hogefoobar.co.jpですよ、ということを設定しているということです。上記でいったんファイルを保存してください。
バーチャルホストの設定をすると、http://localhost/~でアクセスした際に、意図したページが表示されなくなる可能性があります。特にXAMPPをご利用の方は、XAMPPの管理画面にアクセスできなくなる可能性があります。これを回避するには、NameVirtualHost *:80の下に、localhostを明示的に指定してあげてください。
■設定例(DocumentRootは状況に応じて変更してください):
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
</VirtualHost>
http://local.hogefoobar.co.jpでアクセスしたとき、と言いましたが、実際にはそんなアドレスは存在しません。どうやってそのURIをローカルサーバに向けるかというと、ローカルPCにて、IPアドレスとホスト名のマッピングをすればいいのです。それを行うファイルがhostsファイルです。hostsファイルを修正して、そのコンピュータからのアクセスのみ、http://local.hogefoobar.co.jpを、自分のコンピュータに向けるようにします。
Windowsでは、下記の場所にあります。VISTA以降では、hostsファイルを書き込む際に、管理者権限が必要となります。編集に使用するテキストエディタを起動するときに、右クリックして表示されるメニュー(コンテキストメニュー)から、「管理者として実行」してテキストエディタを起動させ、その後hostsファイルを読み込んでください。なお、ファイルの拡張子がないので驚かれるかもしれませんが、普通のテキストエディタで大丈夫です。
Macでは、下記にありますがhttpd.confと同様、ファインダーではやや行きづらい場所にあります。また、保存には管理者権限も必要になります。基本的には、httpd.confと同様の方法を用いて変更してください。
ファイルの一番下の方に追加する形で、下記を入力します。
なお、127.0.0.1とlocal.hogefoobar.co.jpの間はタブまたは半角スペースで区切ってください。それが終了したら、hostsファイルを保存し、Apacheを再起動します。
その後、ブラウザのアドレスバーにhttp://local.hogefoobar.co.jp/ と入力して、ローカルのサイトが表示されたら完了です!
私もよくやりますが、ほんの一文字でも間違ってしまうとうまくいきません。もし上記でうまく行かない場合は、設定ミスがないかをよく確認してください。また、hostsが反映されるまでに多少時間がかかる場合があります。念のためブラウザを再起動してみるのもいいでしょう。
これでバーチャルホストでのアクセスはできたと思いますが、実は完全ではありません。というのも、今回設定をした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代わりにも使いたいと思います。
はじめまして。独学でいろいろ勉強している者です。今回xamppの設定におきまして、こちらのサイトを活用させていただきました。こちら丸っきりの素人ですが、とてもわかりやすく感謝しております。ありがとうございます。さて、xamppも無事動くことが確認できたのでこのページのバーチャルホストに挑戦してみました。ご教示どおりの設定でバーチャルホストには成功したのですが、今度はxamppの動作確認ページ【http://localhost/xampp/】が開かなくなってしまいました・・・system32 の hosts を変更したことによっての症状なのでしょうか?バーチャルホストを設定してしまうと開けなくなってしまうのでしょうか?xampp と 作業用のディレクトリの場所の関係性がいけないのでしょうか?いろいろな参考文献を見ながら勉強しており、この動作ページを開く指示が多々あり、どうしたらよいかと・・・お忙しいところ恐縮ですが、バーチャルホスト設定を維持しつつ動作確認ページが見れる方法がありましたら教えていただけると幸いです。環境【OS】Windows7(64)【xampp】ver.1.7.3【設置ディレクトリ】 [xampp] D:XAMPP [ローカルディレクトリ] D:www:directory
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さん、こんにちは。うまくいったようで良かったです!個人的なコメントの方も拝読させていただきました。こちらは別途メールでご返信させていただきますね!
おはようございます。たびたび質問して申し訳ありません。バーチャルホストの設定をしてからローカルサイトが表示できなくなりました。多分↓この部分が間違っているような気がします。説明を見て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>ご指摘お願いします。
クルットさん、こんばんは。ご呈示いただいた部分のみを見る限りでは、特別気になるところはありませんね。状況がよくわからないので、どのように表示できないのかを確認させていただいてもよろしいでしょうか?先日Apacheの初期httpd.confに置きかえられたばかりだと思いますが、その時はhttp://localhost/で表示できたと思います。今回バーチャルホストを設定されたとのことですが、バーチャルホストでアクセスしても、表示ができないのでしょうか。(※今回の設定例だと、バーチャルホストでのアクセスは下記のようになります)http://local.hogefoobar.co.jp/それとも、http://localhost/の表示ができなくなったということでしょうか。http://local.hogefoobar.co.jp/の方は表示できる、もしくは両方とも表示できない等といった情報をいただけたらと思います。また、それぞれ表示できない際に、何らかのメッセージ(Not FoundやForbidden等)が画面に表示されていれば補足をお願いします。※なお、host2の方は設定例ですのでそのままでも問題ありませんが、使わないものなので、#でコメントアウトしておいてもいいかもしれませんね。
つたない文章で申し訳ありませんでした。ドキュメントルートの設定までは接続されていました。バーチャルホストの設定をしてからはhttp://local.hogefoobar.co.jp/http://localhost/どちらにアクセスしても「Webページがみつかりません」の表示がでるようになりました。
補足拝見しました。念のため確認なのですが、ドキュメントルートに、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自体にも問題がある可能性があります。その場合、ドキュメントルートを変更するを参考に、設定の再チェックをしてみてください。バーチャルホスト関連に問題があることが分かれば、また別のアドバイスができると思います。問題切り分けのため、ひとまず上記をお試しください。
返答ありがとうございました。ただ返答の部分に分からない所があるので教えてもらってもいいでしょうか?ドキュメントルートに、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自体が起動しなくなりました。正しく配置とはどうゆうことでしょうか?たびたびで申し訳ありませんが教えて下さい。
httpd.confのドキュメントルートがDocumentRoot "C:/www"と設定されているとのことなので、WindowsのフォルダをC:/www/とたどっていって、そこに表示させたいindex.htmファイルが置いてあるか、ということです。同様に、WindowsのフォルダをC:/www/hogefoobar.co.jp/とたどって、こちらにもindex.htmファイルがあることをご確認ください。今回ためしに変更された部分は変更前が正しいので、もとに戻してくださいね。
おはようございます。やはりindex.htmファイルを配置してないことが原因でした。両方とも表示できるようになりました。ありがとうございました。
とてもわかりやすい情報を公開していただいて感謝しております。以下いきなり質問なのですが、よろしくお願い致します。こちらのHPを見ながらなんとか自宅のMac内にMAMPをインストール、バーチャルホストで3つのサイトを作成。その内ひとつでWordPressを動作させる。ところまではうまく行ったのですがMAMPをインストールしたMacからは3つのサイト全て1. http://local.hogehoge.jp2. http://local.hogehoge2.jp3. 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も追加したのですがダメなようです。何か別のファイルを設定が必要でしょうか?
先ほどバーチャルホストの設定について質問しましたが質問内の Allow from localhost 127.0.0.1 は127.0.0.1を入れるとMAMPを入れたPCからもlocal.hogehoge.jpにアクセス出来なくなってしまうため Allow from localhostまでに変更してテストしていた状況でした。
K.Kさん、こんばんは。名前ベースでバーチャルホストが設定されていますので、IPアドレスでアクセスした際に、デフォルトホストであるhttp://local.hogehoge.jpが表示されてしまっているのだと思います。例えば、バーチャルホストの設定が下記だったとします。~中略~ServerName local.hogehoge.jpDocumentRoot "D:/www/hogehoge.jp"~中略~名前ベースというのは、上記で言えばhttp://local.hogehoge.jp でリクエストされたときに、D:/www/hogehoge.jpを表示するという仕組みです。ですので、同一ネットワーク上のPCからアクセスする際も、http://local.hogehoge.jphttp://local.hogehoge2.jphttp://local.hogehoge3.jpというようなURIでリクエストをする必要があります。それには、それぞれのPCのhostsファイルを修正する方法が簡単です。MAMPがインストールされているPCのIPアドレスが192.168.168.6であれば、それ以外の全てのPCのhostsファイルに、下記のような記述を追加してみてください。192.168.168.6 local.hogehoge.jp192.168.168.6 local.hogehoge2.jp192.168.168.6 local.hogehoge3.jpこれでおそらくいけるはずです。なお、もうすでにアクセス制限の設定をされていると思いますが、ローカルネットワークからのアクセスを許可しなければなりませんので、ローカルのIPアドレスが192.168~だと仮定すると、Allow from 192.168という設定は必須です。もしうまくいかない場合は、問題切り分けのために、最初はアクセス制限無しでやってみるのもいいかもしれません。
解決致しました!あちこちの解説サイトも見ていたせいでポート番号あたりを設定するのだと思い込みApacheごと起動しなくなったりと、壁にぶち当たっていたのですが、馬場さんのご指摘どおり、hostsファイルの設定をしたところルーター下ローカルネットワーク内 |-MAMP(Macbook) 192.168.168.6 |-NotePC1 192.168.168.10 |-NotePC2 192.168.168.11のすべてのPCからテスト中のバーチャルホストにURLでアクセス出きるようになりました。以下、私の環境での最終的なhostsの内容ですMAMPを入れたMacのhosts127.0.0.1 local.hogehoge.jp127.0.0.1 local.hogehoge2.jp127.0.0.1 local.hogehoge3.jpその他PCのhostsは全て192.168.168.6 local.hogehoge.jp192.168.168.6 local.hogehoge2.jp192.168.168.6 local.hogehoge3.jpという内容になりました。本当に有難うございました。
MAMPをいれたPCと、ローカルネットワークにつながったPCのどこからでも編集したバーチャルホストのページにアクセスしたい場合の補足ですMAMPインストールフォルダ/conf/Apacheにあるhttpd.conf内にAllow from 192.168Allow from 127.0.0.1Allow from localhostと行を分けて書いたほうが良いみたいです。こちらのホームページをもとに少しでも多くの方がWebデザインを始められるようになるといいですね!
お役に立てたようで何よりです☆よく考えると、同じようなことを実現されたい方は多いと思いますので、時間があるときにでも、当ページの解説に加えておきたいと思います。新たな気づきをいただき、こちらこそ感謝です(^-^)> 行を分けて書いたほうが良いみたいです。執筆時に、併記できることをApacheマニュアルで確認したのですが、環境やバージョン、パッケージソフト等によって異なるのかもしれませんね。こちらも補足したいと思います。教えてくださってありがとうございます!
l----ocalhostも併用したい場合とありますが、案の定その症状が出てしまったみたいです。とりあえず環境はwindows7 32bitapacheは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 hostsInclude conf/extra/httpd-vhosts.confhttpd-vhost.conf側NameVirtualHost *:80<VirtualHost *:80>DocumentRoot "C:/www"ServerName localhost</VirtualHost><VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot "C:/www1"ServerName vh1.localhostServerAlias www.dummy-host.<Directory "C:/www1"> Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all </Directory>ErrorLog logs/vh1-error.logCustomLog logs/vh1-access.log common</VirtualHost><VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot "C:/www2"ServerName vh2.localhostServerAlias www.dummy-host.<Directory "C:/www2"> Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all </Directory>ErrorLog logs/vh2-error.logCustomLog 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が見れないのかも知れません。どうか、私に良い知恵を与えてください!
amorphisさん、こんにちは。バーチャルホストの設定前はlocalhostで閲覧できていたのが、設定したらlocalhostが見られなくなった……という状態ですよね。挙げていただいた部分をざっと拝見する限りでは、ソースに問題はなさそうです。※ただ、本件とは関係無いと思いますが、<Directory "C:/www">~</directory>の項目が二つあるように見えます。そうであれば、最初の<Directory "C:/www">はおそらく<Directory />ではないですか?(あくまで部分的に書き出されているものを見ただけですので、ご自身でチェックしてみてください)ただ、ブラウザによってはキャッシュか何かを読んでしまうのか、即座に反映されない場合があります(Firefoxで確認)。ブラウザの再起動もしてみてください。また、こちらは行っていらっしゃると思いますが、Apacheの再起動も必要です。それでもだめな場合は、いったんすべて修正前に戻して、1つの変更ごとに動作確認(起動確認)されるのがいいでしょう。最初はlocalhostのバーチャルホストを設定して動作確認、その後vh1を設定して動作確認、次はvh2と、1箇所ずつ設定&チェックされるのがお勧めです。
質問失礼します。以前質問させていただいたものです。ローカルでのテストサーバーを用意したくて、再度、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は表示されます。
零さん、こんばんは。Object not found!とありますので、ファイルが見つからないという意味のエラーメッセージとなります。このメッセージが表示されるということは、hostsファイルが正しく設定されており、リクエストがローカルのXAMPPに向いていると推測されます。記載いただいた内容を拝見する限りでは、記述内容であきらかに間違いと言える箇所はなさそうです。考えられる点としては、C:/www/hogefoobar.co.jpの中に、ファイル(index.htmや、index.php等)が存在していますでしょうか?先ほどの通り、ファイルが見つからないというエラーなので、そのあたりに解決の糸口がありそうです。
ご回答ありがとうございます。「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」に変更されている事は確認済みです。どこかおかしい部分はありますでしょうか?よろしくお願いします。
> 「C:/www/hogefoobar.co.jpの中」というのは、> Cドライブ内にある「www」フォルダの中に「index.php」のファイルを入れていますか?> という認識で宜しいのでしょうか?いえ、 Cドライブ内のwwwフォルダ内に、hogefoobar.co.jpというフォルダが存在し(作成し)、その中に表示させたいファイル(index.php等)を入れていますか?という意味です。バーチャルホストの設定で、ServerName local.hogefoobar.co.jpDocumentRoot "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!(ファイルが見つからない)というエラーが出ているのかな!?と推測した次第です。
勘違いしておりました^^;「www」の中に「hogefoobar.co.jp」というフォルダをいれ、そのフォルダに「index.php」を入れると、http://local.hogefoobar.co.jp/index.phpで正常に反映され、表示される事を確認しました。わかりやすい説明、ご回答、ありがとうございました^^
解決して良かったです(^-^)別途メールの件も、ありがとうございます。まとまった時間がとれたときに、じっくり拝見させていただきますね!
C:\WINDOWS\system32\drivers\etc\hosts書き込んだところ、保存する権限がありませんってエラーメッセージが帰ってきてます。解決できる糸口はありますか。
hostsファイルの保存には、管理者権限が必要です。hostsファイルを編集するテキストエディタを起動する際、右クリックメニューから「管理者として実行」で起動し、hostsファイルを読み込み&修正・保存してみてください。※「管理者として実行」については当ページの「hostsファイルを修正する」に記載してはありましたが、読み返すと少しわかりづらかったため、表記を修正しました。気づきをくださってありがとうございます。
この設定でも動きますが違いを教えてください。httpd.conf# Virtual hostsInclude conf/extra/httpd-vhosts.conf=======================================================================================httpd-vhosts.confNameVirtualHost *:80~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~一番下の行~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<VirtualHost *:80> DocumentRoot "D:\サイト保管フォルダ\サイトA" ServerName localhost-siteA.com</VirtualHost><Directory "D:\サイト保管フォルダ\サイトA"> Options Indexes FollowSymLinks ExecCGI AllowOverride All Require all granted</Directory>===========================================hoses127.0.0.1 localhost-siteA.com
こんにちは。Apacheの設定ファイルは、ある程度柔軟に書けます。例えば、<Directory>ディレクティブを<VirtualHost>内に含めることも可能ですが、どちらでも動作しますので好みの問題と言って良いと思います。よって正しく動作していれば気にされる必要はありません。また、本サイトのアップデートができておらず恐縮なのですが、Apache 2.4以降ではNameVirtualHost *:80は非推奨の設定ですので、削除してOKなはずです。
Copyright© Makoto Baba All Rights Reserved.
このウェブサイト内における画像、文章(適切な引用は除く)の無断転載、無断コピーなどはおやめください。
当サイトは、デザイン未経験から独学でフリーランスになった管理人が、Webデザイナーになるための情報を発信するウェブサイトです。