私はLinuxとApacheの両方に不慣れです。
Apacheを使用してコンピューターでホストされているWebサイトがあります。ドメインがwww.myweb.com
であると仮定します。ここで、3つのサブドメインa.myweb.com
とb.myweb.com
を作成します。
私の最初の質問は、仮想ホストを使用してこれを行うことができるかどうかです。私が見つけることができるすべての仮想ホストの例は異なるドメインを使用しているので、それがサブドメインにも適用されるかどうかはわかりません。
私の2番目の質問は、仮想ホストがサブドメインで機能することに基づいています。私のhttpd.conf
ファイルでは、DocumentRoot
の値は/srv/http
です。 /srv/http
の下に、default
、a
、b
の3つのフォルダーを作成しました。そして、これが私のhttpd-vhosts.conf
です:
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/default/public"
ServerName www.myweb.com
ServerAlias myweb.com
ErrorLog "/srv/http/default/logs/error.log"
CustomLog "/srv/http/default/logs/access.log" combined
<Directory />
Options FollowSymLinks Indexes
Require all granted
</Directory>
</VirtualHost>
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/a/public"
ServerName a.myweb.com
ErrorLog "/srv/http/a/logs/error.log"
CustomLog "/srv/http/a/logs/access.log" combined
</VirtualHost>
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/b/public"
ServerName b.myweb.com
ErrorLog "/srv/http/b/logs/error.log"
CustomLog "/srv/http/b/logs/access.log" combined
<Directory />
Options FollowSymLinks Indexes
Require all granted
</Directory>
</VirtualHost>
問題は、ブラウザでwww.myweb.com
、myweb.com
、a.myweb.com
、またはb.myweb.com
と入力すると、常にDocumentRoot
に移動することです。 /srv/http
。それで、私は何か間違ったことをしましたか、またはサブドメインはこのように機能しませんか?どうもありがとう。
仮想ホストセクションの先頭で<VirtualHost myIP:80>
を使用していることに気づきました。名前ベースの仮想ホストすべてに<VirtualHost *:80>
を使用します-名前ベースの仮想ホスト用にサーバーを構成する場合と、サーバーを構成する場合の違いについては、 Apache仮想ホスト構成のセットアップ方法(例を含む) を参照してください。 IPベースの仮想ホスト。サーバーに複数のIPアドレスがあり、サイトが異なるIPアドレスで応答するようにしたい場合は、IPアドレスを入力すると思いますが、サーバーがリッスンしているIPアドレスを使用してすべてのサイトにアクセスできる必要がある場合は、仮想ホストセクションのIPアドレスの代わりに「*」を使用して、違いが生じるかどうかを確認します。それ以外の点では、構成は私の構成と似ています。また、httpd -S
を試して、その記事で提案されているVirtualHost構成シナタックスをチェックし、そのチェックによってApacheが報告するものが間違っているかどうかを確認することもできます。
Apache Documentation で必要とされるように、 'Directory'ディレクティブでフルパスを使用する必要があります。構成を使用して、それぞれのホスト名からhttpd.confで構成された「DocumentRoot」パスへのアクセスを実際に構成します。
デフォルトのWebサイト(www)の「ディレクトリ」構成セクションは次のようになります。
<Directory /srv/http/default/public>
Options FollowSymLinks Indexes
Require all granted
</Directory>
また、ディレクトリ "/"のデフォルトのアクセスはすべてのアクセスを許可することです。つまり、ApachehttpdはURLからマップされたすべてのファイルを提供します。したがって、ドキュメントで提案されているように、httpd.confでより制限されたものに変更することをお勧めします。
<Directory "/">
Require all denied
</Directory>