1424546030 Mac+XAMPP環境でバーチャルホストが効かない


Mac OX X 10.10.2、XAMPP 1.8.2-5でWebアプリの開発をしております。
例えばこれまで、localhost/sub というURLで開発しておりましたが、
サブドメインを使って、sub.localhostというURLで開発したいと思います。

ネット検索したところ、「httpd.conf、httpd-vhosts.conf、hostsを編集→Apatch再起動」という以下のような解説ページがたくさん見つかりました。

XAMPP for Macでのバーチャルホスト設定
http://qiita.com/devsparks/items/c4f6a5d4897301e832a7

同じように変更しているものの、サブドメインでアクセスすることができません。
具体的には、ブラウザのURLにsub.localhost を入力すると、XAMPPのようこそ画面が表示されてしまいます。

アプリ(フレームワークはFuelphp)は以下のフォルダに配置しております。
/Applications/XAMPP/xamppfiles/htdocs/sub/public

お教えいただきたい点が2点あります。

■上記のような解説サイトに書かれている以下のファイル(httpd.conf、httpd-vhosts.conf、hosts)が、どのパスにあるファイルなのかを再確認、お教えいただきたい。

■どうやったらsub.localhostでサイトを表示できるようになりますか?問題箇所の特定と解決方法をお教えください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2015/02/25 04:15:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:eroshigin

sub.localhostにアクセスすると、sub.localhost/xamppが開く(リダイレクト?)ので、ようこそ画面が表示されていると思われます。

/Applications/XAMPP/xamppfiles/htdocs/index.php が動いているのかなぁ?なんでここが動くんだろう??謎です。

ベストアンサー

id:gizmo5 No.1

回答回数504ベストアンサー獲得回数141

ポイント500pt

■上記のような解説サイトに書かれている以下のファイル(httpd.conf、httpd-vhosts.conf、hosts)が、どのパスにあるファイルなのかを再確認、お教えいただきたい。

httpd.conf は、/Application/XAMPP/etc/httpd.conf です。
httpd-vhosts.conf は、httpd.conf に書かれているように、/Applications/XAMPP/etc/extra/httpd-vhosts.conf です。
hosts は /private/etc/hosts です。

■どうやったらsub.localhostでサイトを表示できるようになりますか?問題箇所の特定と解決方法をお教えください。

定義ファイルを見ないと何とも言えませんが httpd-vhosts.conf の sub.localhost の定義は以下のようになっているのではありませんか。

<VirtualHost *:80>
  DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"  
  ServerName sub.localhost
</VirtualHost>

であれば、質問に書かれたような表示は正しい動作だと思いますが。
VirtualHost ディレクティブで Directory の設定がないので、index.php が無い場合にファイルリストが表示されているのだと思います。
上記の定義であればURLは http://sub.localhost/sub/public になります。

URLを http://sub.localhost/ でアクセスしたいのであれば、VirtualHost の定義は以下のようになると思います。
ファイルの一覧を出したくなければ、Directory の設定もやりましょう。

<VirtualHost *:80>
  DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/sub/public"  
  ServerName sub.localhost
  <Directory /var/www/html/tool/>
    AllowOverride All
    Options -Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Directory の設定はあくまでも一例です。

他3件のコメントを見る
id:eroshigin

xamppをインストールした時に書かれているパスが
#Include Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf
で、先頭の#を削除したのが問題でした。
Include Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf

ここに書かれているその他のパスも、先頭スラッシュが怪しいものが含まれているので注意が必要です。

後に見つけたのですが、以下コマンドでvirtual host が正しく設定できているか確認できるようです。
/Applications/XAMPP/xamppfiles/bin/httpd -S

2015/02/22 23:15:38
id:gizmo5

apache のコマンドラインには、チェックのためのオプションがいくつかあります。
http://mathtti.hatenablog.com/entry/20110911/p1

-t は、けっこう使う場面があります。

2015/02/24 23:02:39

その他の回答0件)

id:gizmo5 No.1

回答回数504ベストアンサー獲得回数141ここでベストアンサー

ポイント500pt

■上記のような解説サイトに書かれている以下のファイル(httpd.conf、httpd-vhosts.conf、hosts)が、どのパスにあるファイルなのかを再確認、お教えいただきたい。

httpd.conf は、/Application/XAMPP/etc/httpd.conf です。
httpd-vhosts.conf は、httpd.conf に書かれているように、/Applications/XAMPP/etc/extra/httpd-vhosts.conf です。
hosts は /private/etc/hosts です。

■どうやったらsub.localhostでサイトを表示できるようになりますか?問題箇所の特定と解決方法をお教えください。

定義ファイルを見ないと何とも言えませんが httpd-vhosts.conf の sub.localhost の定義は以下のようになっているのではありませんか。

<VirtualHost *:80>
  DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"  
  ServerName sub.localhost
</VirtualHost>

であれば、質問に書かれたような表示は正しい動作だと思いますが。
VirtualHost ディレクティブで Directory の設定がないので、index.php が無い場合にファイルリストが表示されているのだと思います。
上記の定義であればURLは http://sub.localhost/sub/public になります。

URLを http://sub.localhost/ でアクセスしたいのであれば、VirtualHost の定義は以下のようになると思います。
ファイルの一覧を出したくなければ、Directory の設定もやりましょう。

<VirtualHost *:80>
  DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/sub/public"  
  ServerName sub.localhost
  <Directory /var/www/html/tool/>
    AllowOverride All
    Options -Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Directory の設定はあくまでも一例です。

他3件のコメントを見る
id:eroshigin

xamppをインストールした時に書かれているパスが
#Include Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf
で、先頭の#を削除したのが問題でした。
Include Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf

ここに書かれているその他のパスも、先頭スラッシュが怪しいものが含まれているので注意が必要です。

後に見つけたのですが、以下コマンドでvirtual host が正しく設定できているか確認できるようです。
/Applications/XAMPP/xamppfiles/bin/httpd -S

2015/02/22 23:15:38
id:gizmo5

apache のコマンドラインには、チェックのためのオプションがいくつかあります。
http://mathtti.hatenablog.com/entry/20110911/p1

-t は、けっこう使う場面があります。

2015/02/24 23:02:39
id:eroshigin

お二人にポイントを分配したいのに、id:dilutionistさんが書いてくれたのは回答ではなくgizmo5さんの回答に対するコメントになってしまっていますね。

  • id:eroshigin
    ちなみに、/Applications/XAMPP/xamppfiles/htdocs/index.php を削除すると、
    /Applications/XAMPP/xamppfiles/htdocs/ にあるファイルやディレクトリがブラウザに表示されてしまいます。
  • id:eroshigin
    あれ?なぜ回答が1件でしょうか?

    id:dilutionist さんも回答してくれているのに。
  • id:dilutionist
    dilutionist 2015/02/24 01:22:50
    あれ?解決してんのかな?
  • id:gizmo5
    >id:dilutionist さんも回答してくれているのに。
    回答につけたコメントは、あくまでもコメント扱いなので、回答数にはコメントされません。
    id:dilutionist さんの回答スタイルにもよるでしょうが、質問者さんの意図を汲んで何かしらの回答を書き込んでいただけると、私も気分的に楽になります。
    Mac の XAMPP で、コメントアウトされた Include のパス指定がフルパスになっていないのは、私にとっては盲点でしたので。。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません