将所有子域重定向到 vhost 内的主域

dan*_*jar 1 redirect subdomain virtualhost wildcard-subdomain apache-2.2

我只是想重定向虚拟主机中尚未提及的所有子域ServerName以重定向到空子域。在该域的所有其他虚拟主机之后,我尝试将其添加到我的 httpd.conf 中。

<VirtualHost *:80>
    ServerName *.example.com
    RedirectPermanent / http://example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

空子域(之前加载)的部分是这样的。

<VirtualHost *:80>
    DocumentRoot /var/www/example/htdocs
    ServerName example.com
    <Directory /var/www/example/htdocs>
        Options FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

重新启动 httpd 服务后,我在浏览器指向abc.example.com. 我究竟做错了什么?我希望这个简单任务的其他答案中不需要基于正则表达式的匹配。

小智 7

只需在vhost配置文件中的主块下方添加一个块即可。只需为子域指定ServerAlias使用通配符*。最后,使用 指定重定向地址RedirectPermanent

Listen 80
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ServerName example.com

        <Directory /var/www/html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

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

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerAlias *.example.com
    RedirectPermanent / http://example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)