Debian 上的 Apache 无法正确将 http 重定向到 https

Debian 上的 Apache 无法正确将 http 重定向到 https

Debian 11

配置文件:/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    ServerName zabbix.example.ru

</VirtualHost>
<VirtualHost *:443>
    ServerName zabbix.example.ru
    DocumentRoot "/usr/share/zabbix/"
</VirtualHost>

如果我在浏览器中打开 zabbix.example.ru,它将通过 https 打开。但如果我手动打开http://zabbix.example.ru它不会重定向到 https

同样的设置(据我所知)在 FreeBSD 上对我来说是完美的,但在 Debian 上,我似乎应该做些其他的事情

/usr/sbin/apachectl -S

VirtualHost configuration:
*:80                   zabbix.lasil.ru (/etc/apache2/sites-enabled/000-default.conf:1)
*:443                  zabbix.lasil.ru (/etc/apache2/sites-enabled/000-default.conf:9)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

更新型多巴胺:我有点搞错了问题,不仅没有重定向,还发出这样的错误

Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Apache/2.4.54 (Debian) Server at zabbix.example.ru Port 80

答案1

您想要永久、无条件的重定向。只需不要使用 mod_rewrite:

<VirtualHost *:80>
    ServerName zabbix.example.ru
    Redirect permanent / https://zabbix.example.ru/
</VirtualHost>

答案2

谢谢大家。

阅读评论后,我了解到网站配置(其中启用了 SSL)(在 /etc/apache2/conf-enabled 中文件夹)不限于任何 VirtualHost,因此可以全部服务器,不仅仅是 443 端口

我将其移至端口 433 上的 VirtualHost,问题就解决了

答案3

就我而言,我必须禁用 000-default 站点。

# a2dissite 000-default
# systemctl reload apache2

干杯!

相关内容