在 Apache 2.4 中强制将 https 重定向到 http

在 Apache 2.4 中强制将 https 重定向到 http

我正在尝试以下操作。我有一个发布域名。此发布仅通过 http 进行,但我需要所有通过 https 的请求将我重定向到 http,因为我没有为此安装和配置 SSL 证书。

我尝试在应用程序所在的 documentroot 的 .htaccess 文件中添加以下几行:

RewriteEngine On
RewriteCond% {HTTPS} on
RewriteRule (. *) Http: //% {HTTP_HOST}% {REQUEST_URI} [R = 301, L]

但这并不意味着通过 https 进入的任何内容都会将我重定向到 http。我会错过什么?

此致。

编辑:

好的。

完美,现在我想我理解得更清楚了。要将 https 重定向到 http,您必须生成 SSL 证书并将其存储在 apache 服务器上。

为了测试,我使用 openssl 工具创建了一个自签名证书

openssl req -x509 -nodes -days 365 -newkey rsa: 204 .....

我已经正确生成了它。

下一步已启用default-ssl.cnf站点,其中我添加了之前生成的ssl证书数据的路径。

在此步骤中,我必须执行什么操作才能为我的 wordpress 实例启用从 https 到 http 的重定向。

这是我的 default-ssl.conf 文件

<IfModule mod_ssl.c>
<VirtualHost *: 443>
ServerName www.mydomain.org
ServerAdmin webmaster @ localhost
DocumentRoot / var / www / html/wordpress
<Directory />
FollowSymLinks options
AllowOverride None
</Directory>
<Directory / var / www / html />
Options -Indexes + FollowSymLinks + MultiViews
Allow to cancel all
</Directory>
ErrorLog $ {APACHE_LOG_DIR} /error.log
Record Level Warning
CustomLog $ {APACHE_LOG_DIR} /ssl_access.log combined
SSLEngine on
SSLCertificateKeyFile /etc/apache2/sslcert/apache.key
SSLCertificateFile /etc/apache2/sslcert/apache.crt
#SSLCACertificateFile /etc/ssl/certs/bundle.crt
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and later versions should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

问候

答案1

如果没有 SSL 证书,则无法实现此功能。原因如下:

当浏览器连接到服务器时,安全层会验证连接(包括证书上的名称以及浏览器请求的名称)浏览器发送HTTP请求(例如:GET / HTTP1/1)。

HTTP 对话对于 http 和 https 都是相同的,但是在开始之前要协商加密。

对于 HTTP 1.1,所有请求还应该有一个 Host: 标头,指定请求针对哪个主机,Apache 将根据 Host: 标头和请求中的 URI 的组合计算出完整的 URI。

如果您无法启动 HTTP 对话,您就无法获取请求,因此您无法以任何方式对其作出响应。

相关内容