![在 Apache 2.4 中强制将 https 重定向到 http](https://linux22.com/image/741250/%E5%9C%A8%20Apache%202.4%20%E4%B8%AD%E5%BC%BA%E5%88%B6%E5%B0%86%20https%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20http.png)
我正在尝试以下操作。我有一个发布域名。此发布仅通过 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 对话,您就无法获取请求,因此您无法以任何方式对其作出响应。