虚拟主机中的特定子域名未重定向,但其他子域名成功重定向

虚拟主机中的特定子域名未重定向,但其他子域名成功重定向

我希望我的网站可以被访问example.orghttps://example.org不被访问www.example.org

所以我想http://www.example.org重定向到http://example.org和。http://www.example.orghttps://example.org

但有趣的事情发生了:

https://www.example.org重定向至https://example.org http://www.example.org不是http://example.org

我的main.conf:

<VirtualHost *:80>
    ServerName example.org

    ServerAdmin webmaster@localhost
    DocumentRoot "/var/www/html"

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

<VirtualHost *:443>
    ServerName example.org

    ServerAdmin webmaster@localhost
    DocumentRoot "/var/www/html"

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

    SSLCertificateFile /pathtocert.pem
    SSLCertificateKeyFile /pathtokey.pem
</VirtualHost>

<Directory "/var/www/html">
    Options FollowSymlinks ExecCGI
    AllowOverride None
    Require all granted
</Directory>

我的www.conf:

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

    RedirectPermanent / http://example.org

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

<VirtualHost *:443>
    ServerName www.example.org

    ServerAdmin webmaster@localhost
    DocumentRoot "/var/www/html"

    RedirectPermanent / https://example.org

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

    SSLCertificateFile /pathtocert.pem
    SSLCertificateKeyFile /pathtokey.pem
</VirtualHost>



<Directory "/var/www/html">
    Options FollowSymlinks ExecCGI
    AllowOverride None
    Require all granted
</Directory>

那么问题出在哪里?httphttps重定向难道不应该同时失败或成功吗?

答案1

问题出在域的 DNS“A”和“AAAA”记录上。有一个预配置的 A/AAAA 记录导致www了所有问题。我删除了它们并添加了一个新的*.example.org。DNS 将所有通配符子域重定向到服务器。现在,如何处理它们的责任落在了 Web 服务器上。

现在运行良好。

另请检查:如何将所有通配符子域名重定向到特定子域名?运行 nextcloud 服务器的子域名出现问题

答案2

您可能需要设置重写,您可能需要如下内容:

<VirtualHost *:80> RewriteEngine On # this redirect only www.example.org to https RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.org [NC] RewriteCond %{HTTP_HOST} ^example.org [NC] # this redirects anything to its https equivalent RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}/$1 [R,L] </VirtualHost>

*:80或者,我猜你应该简单地修改从到RedirectPermanent / http://example.org的重定向规则RedirectPermanent / https://example.org。重定向必须指向 https,而不是 http...

相关内容