将所有子域名重定向到虚拟主机内的主域名

将所有子域名重定向到虚拟主机内的主域名

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

<VirtualHost *:80>
    ServerName *.example.com
    RedirectPermanent / http://example.com/
</VirtualHost>

空子域(之前加载)的部分内容如下。

<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>

重启 httpd 服务后,当我将浏览器指向 时,我看到 403 Forbidden abc.example.com。我做错了什么?我希望不需要像描述的那样基于正则表达式的匹配在其他答案中来完成这个简单的任务。

答案1

只需在主块下方添加一个块即可虚拟主机配置文件。只需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>

答案2

<VirtualHost *:80>
    DocumentRoot "/var/www/example"
    ServerName *.example.org
    RedirectPermanent / http://example.com/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/example/htdocs"
    ServerName example.org
    <Directory /var/www/example/htdocs>
         Options FollowSymLinks
         AllowOverride All
         Order Allow,Deny
         Allow from all
    </Directory>
</VirtualHost>

对于错误 403,可能您没有设置默认文档,因此它尝试访问文件夹内容。对于默认文档,您可以使用例如

DirectoryIndex index.html Index.htm index.php

相关内容