如何将所有通配符子域redirect到特定的子域? 与运行下一个云服务器的子域有问题

我想要像x.example.comy.example.com等不存在的通配符子域名redirect到404.example.com

我正在使用Apache 2.4。 我怎样才能做到这一点?

我试过的:

我的404.conf:

 <VirtualHost *:80> ServerName 404.example.com ServerAlias *.example.com ServerAdmin webmaster@localhost DocumentRoot "/var/web/404" ErrorLog ${APACHE_LOG_DIR}/404-error.log CustomLog ${APACHE_LOG_DIR}/404-access.log combined </VirtualHost> <VirtualHost *:443> ServerName 404.example.com ServerAlias *.example.com ServerAdmin webmaster@localhost DocumentRoot "/var/web/404" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /fullchain.pem SSLCertificateKeyFile /privkey.pem </VirtualHost> <Directory "/var/web/404"> Options FollowSymlinks ExecCGI AllowOverride None Require all granted </Directory> 

这实际上工作。 123l4k.example.com被redirect到404.example.com 。 但是nextcloud子域名nc.example.com也会redirect到404.example.com其他子域名正常工作。

我必须禁用virutalhost 404.conf才能访问下一个云端子域。

我的nc.conf:

 Alias /nextcloud /var/web/nextcloud/ <VirtualHost *:80> ServerName nc.example.com ServerAlias nextcloud.example.com DocumentRoot "/var/web/nextcloud/" RedirectPermanent / https://nc.example.com ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined #RewriteLog "/var/log/apache2/nextcloud_rewrite.log" </VirtualHost> <VirtualHost *:443> ServerName nc.example.com ServerAlias nextcloud.example.com DocumentRoot "/var/web/nextcloud/" ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined SSLCertificateFile /fullchain.pem SSLCertificateKeyFile /privkey.pem </VirtualHost> <Directory "/var/web/nextcloud/"> Options +FollowSymlinks +ExecCGI AllowOverride None Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME "/var/web/nextcloud" SetEnv HTTP_HOME "/var/web/nextcloud" </Directory> <Directory "/var/web/nextcloud/data/"> Require local </Directory> 

如何保持通配符域的行为redirect到404.example.com并能够访问nc.example.com上的我的下一个云服务器?

Apache Web服务器按字母顺序读取vhostconfiguration文件。 这意味着在404.conf文件之前读取了nc.conf文件。 因此,主机首先与ServerAlias *.example.com指令相匹配,这匹配并且其他虚拟主机被忽略。 通过将nc.conf文件重命名为00_nc.conf ,Nextcloudconfiguration将首先加载,然后与nextcloud.example.com进行匹配,其他域将与稍后加载的404.conf进行匹配。