子域名将我重定向到主域名 Apache2

子域名将我重定向到主域名 Apache2

我有一个在 Apache 服务器上运行的网站。当我尝试访问子域名时,我被重定向到主域名。

这是 Apache 配置文件:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName azaanjobs.com
        ServerAlias www.azaanjobs.com
        DocumentRoot /var/www/azaanjobs/public_html

        <Directory /var/www/azaanjobs/public_html/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

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

        Include /etc/letsencrypt/options-ssl-apache.conf

        SSLCertificateFile /etc/letsencrypt/live/azaanjobs.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/azaanjobs.com/privkey.pem
    </VirtualHost>
</IfModule>

<VirtualHost *:8080>
    ServerAdmin [email protected]
    ServerName government-jobs.azaanjobs.com
    ServerAlias www.government-jobs.azaanjobs.com.com
    DocumentRoot /var/www/government-jobs/public_html/
    
    <Directory /var/www/government-jobs/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

我怎样才能解决这个问题?

答案1

Apache 将尝试按照文件系统中出现的顺序将 Web 请求与配置的域进行匹配在配置文件中。一般来说,最好在处理主站点之前处理子域,主站点应配置为充当任何未处理流量的“全部捕获器”。

考虑到这一点,您的配置文件可以更新为如下所示:

<VirtualHost *:8080>
    ServerAdmin [email protected]
    ServerName government-jobs.azaanjobs.com
    ServerAlias www.government-jobs.azaanjobs.com
    DocumentRoot /var/www/government-jobs/public_html/
    
    <Directory /var/www/government-jobs/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName azaanjobs.com
        ServerAlias www.azaanjobs.com *.azaanjobs.com
        DocumentRoot /var/www/azaanjobs/public_html

        <Directory /var/www/azaanjobs/public_html/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

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

        Include /etc/letsencrypt/options-ssl-apache.conf

        SSLCertificateFile /etc/letsencrypt/live/azaanjobs.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/azaanjobs.com/privkey.pem
    </VirtualHost>
</IfModule>

笔记:

  1. 更新后的配置文件将错误的www.government-jobs.azaanjobs.com.com值替换为ServerAlias正确的.com引用
  2. *.azaanjobs.com在主域中添加了一个别名,以确保捕获任何“意外”流量并将其路由到可能的位置
  3. 主站点上似乎没有任何配置*:80,如果服务器前面的某些东西没有将非 SSL 流量转换为使用 SSL,这可能是一个问题
  4. 子域仍在监听端口8080,因此需要进行更新,*:80然后访问者才可以在浏览器中不指定端口的情况下访问网站

更改配置文件后记得重新启动Apache:

sudo service apache2 restart

这应该能满足你的需求

相关内容