• ベストアンサー

VirtualHostでIPとドメインアクセスで設定を分ける場合ドメインは1つでOKでしょうか?

ドメイン指定の場合とIPでアクセスがあった場合で ドキュメントルートを分けたいのですが、 下記のようにサブドメイン1つでもVirtualHost可能でしょうか? <VirtualHost 210.100.100.100> DocumentRoot /var/www/html/htdocs ServerName www.a.jp </VirtualHost> <VirtualHost 210.100.100.100> DocumentRoot /var/www/html2/htdocs </VirtualHost>

  • php4
  • お礼率42% (373/888)

質問者が選んだベストアンサー

  • ベストアンサー
  • hito-koto
  • ベストアンサー率53% (14/26)
回答No.1

できますが、書く順序が逆ですね。 該当するServerNameがないときは、一番最初の<VirtualHost>が参照されます。

php4
質問者

お礼

回答ありがとうございます。大変助かりました。

関連するQ&A

  • Apache VirtualHost でワイルドカード(?)設定

    Apache2.2.3を利用しています。 virtualhost.confに50程度のサブドメインを、 下記のように設定をしています。 *************************************************** <VirtualHost *:80>   ServerName suzuki.example.com   DocumentRoot /var/www/html/suzuki/ </VirtualHost> <VirtualHost *:80>   ServerName sato.example.com   DocumentRoot /var/www/html/sato/ </VirtualHost> <VirtualHost *:80>   ServerName yamada.example.com   DocumentRoot /var/www/html/yamada/ </VirtualHost> ・ ・ ・ *************************************************** つまり *************************************************** <VirtualHost *:80>   ServerName ▲▲▲.example.com   DocumentRoot /var/www/html/▲▲▲/ </VirtualHost> *************************************************** のようなルールになっているのですが、 これをワイルドカード使ってできないでしょうか? 宜しくお願いします!

  • ApacheのVirtualHostを設定したい

    ApacheのVirtualHostを設定したい http://xxxxx.jp http://yyy.xxxxx.jp:5041 http://zzz.xxxxx.jp:5042 という3種類の接続方法をしたいが為に、VirtualHostを設定していますが、うまく設定できずに 困っています。 Listen 80 Listen 5041 Listen 5042 NameVirtualHost 111.222.333.444:80 NameVirtualHost 111.222.333.444:5041 NameVirtualHost 111.222.333.444:5042 <VirtualHost 111.222.333.444:80> ServerName xxxxx.jp DocumentRoot /test </VirtualHost> <VirtualHost 111.222.333.444:5041> ServerName yyy.xxxxx.jp DocumentRoot /test2 </VirtualHost> <VirtualHost 111.222.333.444:5042> ServerName zzz.xxxxx.jp DocumentRoot /test3 </VirtualHost> 今現状、こんな設定なのですが、これだと http://yyy.xxxxx.jp http://zzz.xxxxx.jp とアクセスすると、 http://xxxxx.jp と同じ結果が表示されてしまいます。 サブドメインが付与されているアドレスは、あくまでもポート指定が 5041、5042と正しく指定された場合のみアクセスされてほしいです。 (そうじゃないときは何らかのHTTPエラーが出ればいいです) どう設定すれば実現できるでしょうか?

  • ApacheのVirtualHostの設定すると、メイン(?)の設定に影響してしまう

    いつもお世話になっております。 ApacheのVirtualHostの設定をして複数サイトを運営したいと思ったのですが、VirtualHostの設定をしたところ、VirtualHostでないURLの方までドキュメントルートがVirtualHostに設定した方のページが表示されるようになってしまいました。 説明が下手すぎるので、具体的にはieserverというDDNSにて aaaaa.dip.jp bbbbb.dip.jp という二つのサブドメインを取得しまして(ドメインは適当です) httpd.confのSection 2 'Main' server configrationには ServerName aaaaa.dip.jp:80 DocumentRoot "/var/www/html" と記述し、 Section 3: Virtual Hostsには NameVirtualHost *:80 <VirtualHost *:80> ServerName bbbbb.dip.jp DocumentRoot /var/www/sample <Directory "/var/www/sample"> Order allow,deny Allow from all </Directory> </VirtualHost> と記述しています。 これで、 http://aaaaa.dip.jpでアクセスすれば/var/www/htmlの中のindex.htmlが、 http://bbbbb.dip.jpでアクセスすれば/var/www/sampleの中のindex.htmlが 表示されると思ったのですが、 どっちのURLでアクセスしても/var/www/sampleの中のindex.htmlが表示されて しまうのです。 ちなみにVirtualHostの設定をコメントアウトしてからリスタートすると /var/www/htmlの中のindex.htmlが表示されるようになります。 何か設定が足りていないのでしょうか? 調べてもちょうど良い文献が見つからず四苦八苦しております。 原因が推測できれば教えていただけると助かります。

  • VirtualHostの設定

    名前ベースのVirtualHostの設定を試してるのですが、 Permission denied: file permissions deny server accessとなり アクセスできません。wwwはアクセスできます。 サイトでいろいろ調べているのですが、解決できませんでした。 パーミッションも777に設定しています。httpd.confの設定を載せます。pperというユーザーを追加しました。 *ホストとドメインは仮名 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /var/www/html ServerName www.pani.mydns.jp ErrorLog logs/www.pani.mydns.jp-error_log CustomLog logs/www.pani.mydns.jp-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/pper/html ServerName test.pani.mydns.jp ErrorLog logs/test.pani.mydns.jp-error_log CustomLog logs/test.pani.mydns.jp-access_log common </VirtualHost>

  • マルチドメインのhttpd.conf 設定について

    複数ドメインにおける httpd.conf の記述について教えて下さい。 ■環境 linux CentOs6.5 BIND-9.8.2 専用サーバーを構築し、複数ドメイン管理をしたいと考えています。 メインとなるドメイン(main.jp)の表示までは完了しています。 メインのドメイン:main.jp メインのルートディレクトリ:/var/www/html/ 追加したいドメイン:other.jp other.jpのルートディレクトリ:/var/www/html/domains/abc/ ■現象 http://other.jp にアクセスすると http://main.jp/domains/abc/ となってしまいます。 ページ自体は表示したいページが表示されていますが、URLが other.jp となりません。 ■質問 マルチドメイン設定がうまくいかないので教えて下さい。 上記のディレクトリ構成で other.jp を正しく設定するにはどうすればよいでしょうか。 ルートディレクトリに使用するディレクトリ名はシステム上、ドメインと異なる名前にしたいと考えています。 ■現在の記述 #main.jp <VirtualHost *:80> ServerName www.main.jp ServerAlias main.jp DocumentRoot /var/www/html </VirtualHost> #追加したいドメイン(other.jp) <VirtualHost *:80> ServerName www.other.jp ServerAlias other.jp DocumentRoot /var/www/html/domains/abc </VirtualHost> 宜しくお願いします。

  • 1つのIPアドレスでサブドメインをSSLにするには

    1つのIPアドレスでサブドメインをSSL通信にしたいと思います。 https://www.hoge.com https://geho.hoge.com しかしIPはひとつです。 その場合ジオトラストでワイルドカード証明書(サブドメインなら 無制限に増やせる)を取得して設定をしてみましたが設定がうまく行き ません。 流れとしてcentos5でhttpd.confにVirtualHostを設定しました。 こんな感じです。 <VirtualHost *:80> ServerAdmin admin@hoge.com DocumentRoot /var/www/www.hoge.com ServerName www.hoge.com ErrorLog /var/log/www.hoge.com.err CustomLog /var/log/www.hoge.com.log combined </VirtualHost> CSRを作成して認証してもらいssl.confの設定しました。 # General setup for the virtual host <VirtualHost *:443> DocumentRoot "/var/www/www.hoge.com" ServerName www.hoge.com:443 鍵も下記のように変更しました。 SSLCertificateFile /usr/local/certs/server.crt SSLCertificateKeyFile /usr/local/certs/server.key それでもなぜかドメインは一つかしか使えず、さらにhttpsで アクセスするとIEでは 「このページにはセキュリティで保護されている項目と保護されて いない項目が含まれます」 とエラーがでます。 サイトはPHPで構築したものですが小規模なサイトです。 非常に困っておりSSL通信をVirtualHost毎に行いたいと思います。 どうすれば良いかまったくわからない状態です。 アドバイスのほどよろしくお願いします。

  • スマホでxampp上のバーチャルドメインにアクセス

    windows上のxamppに C:\xampp\htdocs\<バーチャルドメイン> のディレクトリを作って、windowsからは http://<バーチャルドメイン>/ でアクセスできるようにしています。 これをandroid(スマホ)から見たくて http://masterka.seesaa.net/article/248925874.html を参考に設定を変更したところ、 http://<指定したip>/ <バーチャルドメイン> でandroidからアクセスできるようになりました。 ただ、サイトルートで参照しているcss等の関係で、androidからも http://<バーチャルドメイン>/ でアクセスできるようにしたいのです。 C:\xampp\apache\conf\extra のhttpd-vhosts.confに <VirtualHost *:80> DocumentRoot C:/xampp/htdocs/<バーチャルドメイン> ServerName <バーチャルドメイン> </VirtualHost> <Directory "C:/xampp/htdocs/<バーチャルドメイン>"> order deny,allow allow from ALL </Directory> C:\Windows\System32\drivers\etc のhostsファイルに 127.0.0.1 <バーチャルドメイン> と記述したものに <指定したip> <バーチャルドメイン> と行を加えてみたのですが、うまく行きません。 アドバイスいただけると助かります。

  • サブドメイン(test.*****.jp)の設定方法

    現在プライベートサーバを借りており、root権限を持っています。 現在、 www.*****.jp *****.jp で、アクセスするとページを見れるのですが、 test.*****.jp のようなテスト環境を用意したいので、以下のように、httpd.confに 設定して、再起動しましたが、test.*****.jp が見れません。 NameVirtualHost *:80 <VirtualHost *:80>   ServerName www.*****.jp   DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80>   ServerName test.*****.jp   DocumentRoot /var/www/html_test </VirtualHost> エラーログには下記のようなものがありました。 File does not exist: /var/www/html/dns_zones.txt DNSの設定?が必要なのでしょうか? この変の知識がなく、さっぱり分かりません。 何卒、よろしくお願いいたします。 ※OSは、CentOS5です。

  • CentOSでのマルチドメイン設定

    初めてのサーバー構築でCentOS5を導入し、teraTermから設定を行っています。 メインドメイン設定、FTP設定、httpd設定などを行い、メインドメインの表示まで完了しました。 ここで、マルチドメインを設定すべく、httpd.confの設定を行っているのですが、 うまくいかないので質問させて頂きました。 vi /etc/httpd/conf/httpd.confでファイルを修正。 メインドメインが一つあり、さらに二つのドメインを追加したいと考えています。 下記のようにバーチャルホストの設定したところ、 Server2は問題なく正常に表示されるのですが、Server3のドメインを ブラウザで入力すると、指定したパスのルートフォルダの場所ではなく、 メインドメインのルートフォルダが参照されてサイトが表示されます。 ※ドメイン表記は仮のものです。 #メイン <VirtualHost *:80> ServerAdmin main@main.com DocumentRoot /var/www/html/ ServerName main.com ServerAlias main.com ErrorLog logs/S1-error_log CustomLog logs/S1-access_log common </VirtualHost> #ドメイン2 <VirtualHost *:80> ServerAdmin s2@sample.com DocumentRoot /var/www/html/domain2.com/ ServerName domain2.com ServerAlias domain2.com ErrorLog logs/S2-error_log CustomLog logs/S2-access_log common </VirtualHost> #ドメイン3 <VirtualHost *:80> ServerAdmin s3@sample.com DocumentRoot /var/www/html/domain3.com/ ServerName domain3.com ServerAlias domain3.com ErrorLog logs/S3-error_log CustomLog logs/S3-access_log common </VirtualHost> まとめますと、メインドメイン、ドメイン2は正常に表示されるが、 ドメイン3がメインドメインのルートフォルダを参照してしまい、表示されない。 追加情報が必要な場合追記しますが、 二つ以上のマルチドメインをせっていする場合は、どのように設定したらよいでしょうか?

  • apacheのVirtualHostの記述について

    サブドメイン *.hoge.com へアクセスされた際、 ドキュメントルート /var/www/subDomains/*/ を参照させたいので、httpd.confを以下のように設定しました。 <VirtualHost *> ServerAlias *.hoge.com VirtualDocumentRoot "/var/www/subDomains/%1/" ・・・  </VirtualHost> これはうまく動作するのですが、上記サブドメイン設定とは別に メインドメイン(hoge.com または www.hoge.com)へアクセスされた場合のみ ドキュメントルート /var/www/main/ を参照させたいのです。 なので、上記記述とは別に、 <VirtualHost *> DocumentRoot "/var/www/main/" ServerName www.hoge.com ・・・  </VirtualHost> を追加したのですが、このメインドメイン用記述は無視されてしまいます。 ※メインドメインへアクセスしても、サブドメイン用のVirtualDocumentRoot である /var/www/subDomains/www/ を参照してしまいます。 こうなってしまう原因は、サブドメイン用の記述である ServerAlias *.hoge.com の指定で、「www.hoge.com」が対象となっているからだと思いますが、 正規表現で「www.hoge.com」を除外する方法や、 その他解決策がありましたらご教授よろしくお願いします。 apacheのバージョンは2.2.15です。 ※ちなみに、正規表現による除外は「ServerAlias (?!www)*.hoge.com」を試してみましたがダメでした。 書き方が悪いのかもしれません。。