サブドメイン用Debian 10 apache2仮想ホスト

サブドメイン用Debian 10 apache2仮想ホスト

私はサブドメインを構成していますDebian 10。デフォルトドメイン構成:apache2virtual hosts

<VirtualHost *:80>
    ServerName system.com
    ServerAlias system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/system.com
    
    <Directory /var/www/system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

仮想ホストのサブドメイン構成の場合:

<VirtualHost *:80>
    ServerName api.system.com
    ServerAlias api.system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/api.system.com
    
    <Directory /var/www/api.system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
#       Order Allow,Deny
#       Allow from All
    </Directory>

    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ブラウザにsystem.comと入力すると、system.comディレクトリのindex.htmlが表示されます。 api.system.comと入力すると、api.system.comフォルダにindex.htmlが表示されます。

コマンド出力sudo apache2ctl -S::

my@server088331:/etc/apache2/sites-available$ sudo apache2ctl -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
         port 80 namevhost api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
                 alias api.system.com
         port 80 namevhost phpmyadmin.system.com (/etc/apache2/sites-enabled/phpmyadmin.conf:1)
                 alias phpmyadmin.system.com
         port 80 namevhost system.com (/etc/apache2/sites-enabled/system.conf:1)
                 alias system.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

すべてが問題ないようですが、サブドメインに問題があります。 api.system.comと入力すると、api.system.comディレクトリからindex.htmlのコンテンツを取得します。しかし、たとえば、api55.system.comと入力すると、api.system.comからindex.htmlもインポートされます。 api41.system.comなどについても同じ結果が表示されます。これらのドメインは存在せず、これらのドメインの仮想ホストに構成は存在しませんが、

特定のドメインに対してのみindex.htmlを取得するように仮想ホストを構成するにはどうすればよいですか? 2番目のドメインを追加すると、そのサブドメインの仮想ホストに割り当てられているフォルダからのみファイルをインポートする必要があるためです。

答え1

私はあなたが探しているすべてのホストが同じIPアドレスを持っていると仮定します。おそらくこれが役に立つでしょう

RewriteEngine on
RewriteCond   %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]

私のシステムではテストしていませんが、api.system.com以外のURLに移動すると404エラーが返されるはずです。これがあなたが求めているものですか?

関連情報