Apache 中 https 到 https 重定向的问题

Apache 中 https 到 https 重定向的问题

我希望发生以下重定向:

http://www.example.org->https://example.org[在职的]

https://www.example.org->https://example.org[不工作]

正如您所看到的,当使用“https”时,它不会重定向到https://example.org但只是停留在https://www.example.org

我的 www.conf(用于 www.example.org):

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

    Redirect / https://example.org

    ServerAdmin webmaster@localhost
    DocumentRoot /srv/www

    ErrorLog ${APACHE_LOG_DIR}/www_error.log
    CustomLog ${APACHE_LOG_DIR}/www_access.log combined

</VirtualHost>

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

    Redirect / https://example.org

    ServerAdmin webmaster@localhost
    DocumentRoot /srv/www

    ErrorLog ${APACHE_LOG_DIR}/www_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/www_ssl_access.log combined

    Include /etc/letsencrypt/certbot.conf
</VirtualHost>

我的main.conf(例如.org):

<VirtualHost *:80>
    ServerName example.org

    Redirect / https://example.org

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/main_error.log
    CustomLog ${APACHE_LOG_DIR}/main_access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerName example.org

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/main_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/main_ssl_access.log combined

    Include /etc/letsencrypt/certbot.conf
</VirtualHost>

<Directory /var/www/html>
    Options -Indexes
</Directory>

答案1

我会这样做(不是完整的配置,只是展示概念):

<VirtualHost *:80>
    ServerName example.org
    ServerAlias www.example.org

    Redirect Permanent / https://example.org
</VirtualHost>

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

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^example.org
    RewriteRule (.*) https://example.org$1 [R=301,L]
</VirtualHost>

这里的想法是每个端口一个 VirtualHost,而不是每个域一个 VirtualHost。www.DOMAIN 和 DOMAIN 几乎相同。因此,任何来自端口 80 的请求都会重定向到端口 443 上的 https。任何来自端口 443 的请求都将重定向到“自身”,如果需要,可以删除 www。

通过 ServerAlias 组合 VirtualHost 非常简洁并简化了您的配置。

您需要添加证书、日志......正如我所说,这还没有准备好投入生产!

相关内容