如何在 Apache Web 服务器中将 http 重定向到 https?

问题描述 投票:0回答:0

我有一个 cakephp 应用程序在 docker 容器上运行,里面有 apache web 服务器。 我当前的 apache 配置如下所示:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

如果我在浏览器上访问 http://localhost 或 http://localhost:80(localhost 以某种方式重定向到 localhost:80),它会显示 400 Bad Request,我应该使用 https 而不是 http。好的,所以我转到 https://localhost:80 并且它工作正常(注意:https://localhost 不起作用,我必须将端口号放在最后)

我的问题是,如何让 http://localhost 显示 https://localhost:80 当前显示的内容?

我已经尝试将我的 apache 配置更改为此:

<VirtualHost *:80>
     ServerName localhost
     Redirect permanent / https://localhost/
</VirtualHost>

<VirtualHost *:443>
    ServerName localhost
    DocumentRoot /var/www/html/

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key

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

如果我去 http://localhost 或 http://localhost:80 它被重定向到 https://localhost 好吧,但它不起作用(无法连接)。如果我去 https://localhost:80 或 https://localhost:443 它也不起作用。我应该如何修改 apache 配置以使其在 http://localhost 上工作?我的 Dockerfile 或 docker-compose 配置会影响这个吗?我试着问 chatGPT 所有这些,但它给我的答案没有帮助。

php docker apache redirect cakephp
© www.soinside.com 2019 - 2024. All rights reserved.