私のVirtualHost
設定は以下のとおりです。
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example/html
</VirtualHost>
サブドメインを次のように追加したい:new.example.com
また、ワイルドカードを追加して、他のすべてのサブドメイン(*.example.com
)をキャッチし、www.example.com
にルーティングします。
このサブドメインを追加するにはどうすればよいですか? A
レコードが含まれますか?
ワイルドカードの場合、ServerAlias
を...に変更すると.
ServerAlias example.com *.example.com
...その後、サブドメイン(new.example.com
)に干渉しますか?
編集:単一のホストに複数のドメインがあります(仮想ホスト経由)。これは000-default.conf
と同じフォルダーにありますが、example.conf
という名前です。 (私は実際に000-default.conf
を削除し、それらが指すドメインにちなんで名付けられたconfファイルを使用しました。)
はい。今後の労力を軽減するための少しの作業を提案します。
助けるために、この答えでいくつかの仮定をしなければなりません。
3つの異なるタスクがあります。1つは、構成ファイルを編集します。 2つ目は、DNSでサブドメインを定義します。 3、Apacheを再起動します。
また、wwwを使用せずにサイトを作成し、wwwを使用してサイトエイリアスを作成することもお勧めします。それはもう少し適切です。
Httpd.confがある場合、すべてが1つのファイルになりますが、RedHatなどのApacheインストールがいくつかあることを除いて、Apache構成がかなり前に更新されていることを警告します。もちろん、各Linuxには独自のパッケージがあります。また、httpd.confを扱ってから非常に長い時間が経過しているので、これを調査することをお勧めします。
000-default.confをお持ちの場合は、このファイルを実際の作業サイトに使用せず、キャッチオールサイトに保存することをお勧めします。 IPアドレスのみのアクセスや、サーバーに存在しないドメイン/サイトへのアクセスなど、後の問題に役立つキャッチオールサイトをお勧めします。
000-default.confでサイトが定義されていると仮定しています。そうでない場合は、000-default.confに関する推奨事項を無視し、既存の構成ファイルを変更してサブドメイン用に作成するだけです。
000-default.confがある場合は、サイトごとにconfファイルを作成する必要があります。これが私が考えていることの例です。
キャッチオールサイト(/etc/Apache2/sites-available/000-default.conf)を作成します。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
親サイト(/etc/Apache2/sites-available/example.com.conf)を作成します。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/example.com/www
ErrorLog /home/example.com/log/example.com_error_log
CustomLog /home/example.com/log/example.com_access_log combined
DirectoryIndex index.php
<Directory /home/example.com/www>
Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
Allow from all
AllowOverride All
</Directory>
RewriteEngine on
</VirtualHost>
サブドメインを作成します(/etc/Apache2/sites-available/my-sub-domain.example.com.conf):
<VirtualHost *:80>
ServerName my-sub-domain.example.com
ServerAlias www.my-sub-domain.example.com
DocumentRoot /home/my-sub-domain.example.com/www
ErrorLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_error_log
CustomLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_access_log combined
DirectoryIndex index.php
<Directory /home/my-sub-domain.example.com/www>
Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
Allow from all
AllowOverride All
</Directory>
RewriteEngine on
</VirtualHost>
もちろん、実際に現在のWebサイトを移動する必要はありません。親サイトのDocumentRootディレクティブを変更するだけです。同様に、他のいくつかの構成要素も含めました。実際に必要なものを調査する必要があります。セキュリティに特に注意してください。このサンプル構成を「そのまま」単純にカットアンドペーストするのは望ましくありませんが、当然のことながらドメイン名では機能しません。
次に行う必要があるのは、サイトSOA(権限のステートメント)が定義されているDNSレコードを定義することです。多くの場合、これはあなたのレジストラですが、そうである必要はありません。
DNSレコードは、example.comやwww.example.comエントリのようなもので、次のようになります。
example.com A 10.0.3.201
www.example.com CNAME example.com
my-sub-domain.example.com A 10.0.3.201
www.my-sub-domain.example.com CNAME my-sub-domain.example.com
DNSレコードがインターネット全体に伝播するまでに時間がかかります。一部のDNSサーバーはそれよりも迅速に変更を取得しますが、24〜72時間のどこかに期待します。
最後に必要なことは、Apacheを再起動して、サイトが認識されることを確認することです。設定ファイル内の変更は、Apacheの再起動時にキャッシュされます。