Virtualhostの設定でドメインを当てたいができない理由と対処法

このQ&Aのポイント
  • さくらのVPSを使用してサイト立ち上げ中。ドメインをサイトに当てる設定で困っている。
  • DocumentRootが/var/www/html/example1になっており、他のディレクトリにアクセスできない問題が発生。
  • WordPress内のリンクがドメインに対応できていないため、ページを探すのが困難。対処法が分からない。
回答を見る
  • ベストアンサー

Virtualhost

現在、さくらのVPSを借りてサイト立ち上げ中です。 お名前.comで登録したドメインをそのサイトに当てる設定で困っています。 これまでのDocumentRootは/var/www/htmlになっており、その中にいくつかディレクトリ(example1, example2とします)があります。 ちなみにexample1はWordPressです。 そして、ブラウザのアドレスバーに「IP/example1」と打つことによりアクセスしていました。 今回はそのうちのexamlpe1に取得したドメイン(example1.com)を当てたいと思います。 そこで、ネットの記事を参考に/etc/httpd/conf.d/にvhost.confという名前で NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/example1 ServerName example1.com ServerAlias www.example1.com ErrorLog /var/log/httpd/example1.com/error_log CustomLog /var/log/httpd/example1.com/access_log combined <Directory "/var/www/html/example1"> AllowOverride All </Directory> </VirtualHost> と記述したファイルを作り、httpdを再起動しました。 すると、example1.comでexample1のトップページにはいけるのですが、example1内の他のページにはいけません。 また、「IP/example2」と打ってそちらのディレクトリのサイトにも行けなくなります。 考えられる原因はDocumentRootが/var/www/html/example1になっていて、「IP/example2」でアクセスできない。また、WordPress内のリンクがドメインに対応できていないため、いちいち「IP/example1/...」とページを探している。 とかでしょうか。。。そうだとして対処法が分かりません。 どうすれば、取得したドメインでサイトがうまく動作し、ドメインの無いサイトにもアクセスできるようになるでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5076/13258)
回答No.1

こんな感じでしょうか。 ApacheはVirtualHostの設定を入れるとhttpd.confに設定したDocumentRootは無視され、設定が無いサーバ名やIPアドレスでアクセスが有った場合はVirtualHosディレクティブの1個目の設定を適用します。 なので、1個目にサーバのFQDNでVirtualHosディレクティブを作るなどしてあげるといいです。 ========== NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/ ServerName hoge.example1.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/example1 ServerName example1.com ServerAlias www.example1.com ErrorLog /var/log/httpd/example1.com/error_log CustomLog /var/log/httpd/example1.com/access_log combined <Directory "/var/www/html/example1"> AllowOverride All </Directory> </VirtualHost>

symmetry5
質問者

お礼

回答ありがとうございました。 うまくいきました!!

関連する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> *************************************************** のようなルールになっているのですが、 これをワイルドカード使ってできないでしょうか? 宜しくお願いします!

  • 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>

  • ApacheでのVirtual Hostの設定

    RedHatLinux9.0/Apache2.0 動的IPのADSLでhn.orgのDDNSを使い、サーバを立てました。 ドメインを持っているため、それを割り当てようと/etc/httpd/conf/httpd.confでVirtual Hostの設定をしたのですが、外部からドメインで接続しても指定したディレクトリを読みに行ってくれず、ディフォルトの/var/www/htmlのディレクトリが表示されていまいます。 DNS(bind?)をこちらで動かしてないのですが、それが原因なのでしょうか? httpd.confはこのようにしています。 # # Use name-based virtual hosting. # NameVirtualHost 127.0.0.1 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # <VirtualHost 127.0.0.1> ServerAdmin admin@自分のドメイン.biz DocumentRoot /home/ff/www/ ServerName www.自分のドメイン.biz ServerAlias 自分のドメイン.biz ErrorLog logs/ff/error_log CustomLog logs/ff/access_log common </VirtualHost> また、NameVirtualHost 127.0.0.1と<VirtualHost 127.0.0.1>を、NameVirtualHost *と<VirtualHost *>に変えるとすべてのアクセスがForbiddenになってしまいます。 ログをみたところ、どういうわけかIE6.0なのにHTTP/1.0で繋がっているみたいなのですが、やはりそれなのでしょうか・・・? すみません。アドバイスよろしくお願いいたします。m(_ _)m

  • 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が表示されるようになります。 何か設定が足りていないのでしょうか? 調べてもちょうど良い文献が見つからず四苦八苦しております。 原因が推測できれば教えていただけると助かります。

  • Apache2.2が再起動できない問題についてです

    --- 前提・実現したいこと バーチャルホスト2つ目から3つ目を追加して、Apacheを再起動させたところ[FAILED]と出力されます。 不思議なのが、設定したバーチャルホストを3つから2つに減らしてApacheサーバを再起動したら動きます。 また、構文に誤りがないか確認しましたが「Syntax OK」と出力されました。 ご教授のほどよろしくお願いします。 ------------------------------------------------------------------------------------------------------------------------- --- 発生している問題・エラーメッセージ エラー・ログはございません。 Apache サーバを再起動した際し、[FAILED] ------------------------------------------------------------------------------------------------------------------------- --- vhostで設定した構文です。 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/domain-name ServerName domain-name ServerAlias domain-name ErrorLog /var/log/httpd/domain-name/error_log CustomLog /var/log/httpd/domain-name/access_log combined <Directory "/var/www/html/domain-name"> </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/domain-name ServerName domain-name ServerAlias domain-name ErrorLog /var/log/httpd/domain-name/error_log CustomLog /var/log/httpd/domain-name/access_log combined <Directory "/var/www/html/domain-name"> </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/domain-name ServerName domain-name ServerAlias domain-name ErrorLog /var/log/httpd/domain-name/error_log CustomLog /var/log/httpd/domain-name/access_log combined <Directory "/var/www/html/domain-name"> </Directory> </VirtualHost>

  • 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>

  • Apache2+Tomcatで443のみアクセスできません

    Apache2+Tomcat4.1.30で、javaの業務用アプリを動かしています。 443アクセスにしたいのですが httpd.confに記述をせず、ssl.confのみに記述をしても 80でアクセスできてしまいます。 server.xmlのHost nameに記述があることで アクセスが出来てしまっている気がするのですが どうにかして443アクセスのみにすることは出来ませんでしょうか? 下記のように記述してあります。 (ドメインはexample.comに変更してあります) ssl.conf <VirtualHost xxx.xxx.xxx.xxx:443> ServerAdmin webmaster@example.com ServerName www.example.com DocumentRoot /usr/local/example ErrorLog /var/log/httpd/www.example.com-error_log CustomLog /var/log/httpd/www.example.com-access_log common CustomLog /var/log/httpd/www.example.com-referer_log referer CustomLog /var/log/httpd/www.example.com-agent_log agent </VirtualHost> server.xml <Host name="www.example.com" debug="0" appBase="/usr/local/" unpackWARs="true" autoDeploy="true"> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="example_log." suffix=".txt" timestamp="true"/> <Context path="" docBase="example" debug="0" reloadable="true" trusted="false" crossContext="false"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="example.com_log." suffix=".txt" timestamp="true"/> </Context> </Host>

  • apacheのVirtualHostでの振り分けについて(SSL)

    VirtualHostを使って同一サーバーでのSSLの対応または非対応の振り分けをしています。 WinXP Apache 2.0.55 C:\Apache3 Tomcat 4.1 C:\Program Files\Apache Group\Tomcat 4.1 OpenSSL C:\OpenSSL apacheとtomcatは連携させています。 apache httpd.confの最後に以下を追加するとApacheが起動しません。 <VirtualHost localhost:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "C:/Apache3/htdocs"   SSLDisable # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> SSLDisableを削除すると、問題なく起動しますがhttp,httpsと両方でアクセス出来てしまいます。 何がいけないんでしょうか? 最終的には、デフォルトでSSL不可にしておいてVirtualHostで 指定したディレクトリにSSLを施したいです。

  • 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がメインドメインのルートフォルダを参照してしまい、表示されない。 追加情報が必要な場合追記しますが、 二つ以上のマルチドメインをせっていする場合は、どのように設定したらよいでしょうか?

  • VirtualHostディレクティブの記述について

    教えてください。 サーバで既に構築してあるサイトについては、httpd.confの中でVirtualHostを使っています。 追加で検証用のサーバを立てるのですが、IPアドレスでアクセスできるようにしたいです。IPアドレスでサイトにアクセスするようにするには、追加のVirtualHostを書き、ServerNameにIPアドレスを指定すれば良いでしょうか? 宜しくお願い致します。